Details
-
Type: Bug
-
Status: Closed
-
Priority: Major
-
Resolution: Fixed
-
Affects Version/s: EE-4.0.0.GA, EE-3.3.0.GA_P03
-
Fix Version/s: EE-4.1.0.RC1, EE-4.1.0.GA, EE-3.3.0.GA_P04, 4.2.BETA, 4.2
-
Component/s: Push Library
-
Labels:None
-
Environment:Tomcat 7, pre 7.0.62 and Tomcat8 pre 8.0.22 releases
-
Assignee Priority:P3
-
Support Case References:Support Case 13470:- https://icesoft.my.salesforce.com/5007000001GBRTQ
-
Workaround Description:
Description
"Notification queue consumer." daemon prio=3 tid=0x00000001014f6800 nid=0x17 in Object.wait() [0xffffffff713fe000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
at java.lang.Object.wait(Object.java:503)
at org.apache.coyote.AsyncStateMachine.pauseNonContainerThread(AsyncStateMachine.java:382)
- eliminated <0xfffffffe5f76aae0> (a org.apache.coyote.AsyncStateMachine)
at org.apache.coyote.AsyncStateMachine.asyncComplete(AsyncStateMachine.java:240)
- locked <0xfffffffe5f76aae0> (a org.apache.coyote.AsyncStateMachine)
at org.apache.coyote.http11.Http11Processor.actionInternal(Http11Processor.java:356)
at org.apache.coyote.http11.AbstractHttp11Processor.action(AbstractHttp11Processor.java:906)
at org.apache.coyote.Request.action(Request.java:344)
at org.apache.catalina.core.AsyncContextImpl.complete(AsyncContextImpl.java:93)
at org.icepush.servlet.AsyncAdaptingServlet$AsyncRequestResponse.respondWith(AsyncAdaptingServlet.java:74)at org.icepush.SequenceTaggingServer$TaggingRequest.respondWith(SequenceTaggingServer.java:67)at org.icepush.BlockingConnectionServer.respondIfPendingRequest(BlockingConnectionServer.java:177)
at org.icepush.BlockingConnectionServer.respondIfNotificationsAvailable(BlockingConnectionServer.java:149)
- locked <0xfffffffe69880ba0> (a org.icepush.BlockingConnectionServer)
at org.icepush.BlockingConnectionServer.sendNotifications(BlockingConnectionServer.java:126)
at org.icepush.BlockingConnectionServer.receive(BlockingConnectionServer.java:293)
at org.icepush.LocalNotificationBroadcaster.broadcast(LocalNotificationBroadcaster.java:39)
at org.icepush.LocalPushGroupManager$Notification.run(LocalPushGroupManager.java:394)
at org.icepush.LocalPushGroupManager$QueueConsumerTask.run(LocalPushGroupManager.java:432)
at java.util.TimerThread.mainLoop(Timer.java:555)
at java.util.TimerThread.run(Timer.java:505)
The attempt is being made for an incoming request to establish a new blocking connection but it just piles up waiting for the lock.
What’s unclear is why the “Notification queue consumer.” thread is having trouble completing and/or releasing the lock.
On our end, we should be looking into the current locking strategy being used by BlockConnectionServer's respondIfBackOffRequested() and respondIfNotificationsAvailable() and possible coming up with a different locking strategy that avoid any future pile-ups of Threads in State BLOCKED.
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
at java.lang.Object.wait(Object.java:503)
at org.apache.coyote.AsyncStateMachine.pauseNonContainerThread(AsyncStateMachine.java:382)
- eliminated <0xfffffffe5f76aae0> (a org.apache.coyote.AsyncStateMachine)
at org.apache.coyote.AsyncStateMachine.asyncComplete(AsyncStateMachine.java:240)
- locked <0xfffffffe5f76aae0> (a org.apache.coyote.AsyncStateMachine)
at org.apache.coyote.http11.Http11Processor.actionInternal(Http11Processor.java:356)
at org.apache.coyote.http11.AbstractHttp11Processor.action(AbstractHttp11Processor.java:906)
at org.apache.coyote.Request.action(Request.java:344)
at org.apache.catalina.core.AsyncContextImpl.complete(AsyncContextImpl.java:93)
at org.icepush.servlet.AsyncAdaptingServlet$AsyncRequestResponse.respondWith(AsyncAdaptingServlet.java:74)at org.icepush.SequenceTaggingServer$TaggingRequest.respondWith(SequenceTaggingServer.java:67)at org.icepush.BlockingConnectionServer.respondIfPendingRequest(BlockingConnectionServer.java:177)
at org.icepush.BlockingConnectionServer.respondIfNotificationsAvailable(BlockingConnectionServer.java:149)
- locked <0xfffffffe69880ba0> (a org.icepush.BlockingConnectionServer)
at org.icepush.BlockingConnectionServer.sendNotifications(BlockingConnectionServer.java:126)
at org.icepush.BlockingConnectionServer.receive(BlockingConnectionServer.java:293)
at org.icepush.LocalNotificationBroadcaster.broadcast(LocalNotificationBroadcaster.java:39)
at org.icepush.LocalPushGroupManager$Notification.run(LocalPushGroupManager.java:394)
at org.icepush.LocalPushGroupManager$QueueConsumerTask.run(LocalPushGroupManager.java:432)
at java.util.TimerThread.mainLoop(Timer.java:555)
at java.util.TimerThread.run(Timer.java:505)
The attempt is being made for an incoming request to establish a new blocking connection but it just piles up waiting for the lock.
What’s unclear is why the “Notification queue consumer.” thread is having trouble completing and/or releasing the lock.
On our end, we should be looking into the current locking strategy being used by BlockConnectionServer's respondIfBackOffRequested() and respondIfNotificationsAvailable() and possible coming up with a different locking strategy that avoid any future pile-ups of Threads in State BLOCKED.
Activity
- All
- Comments
- History
- Activity
- Remote Attachments
- Subversion
Repository | Revision | Date | User | Message |
ICEsoft Public SVN Repository | #47949 | Thu Feb 18 09:43:47 MST 2016 | jack.van.ooststroom | Fixed JIRA |
Files Changed | ||||
MODIFY
/icepush/trunk/icepush/core/src/main/java/org/icepush/BlockingConnectionServer.java
|
Repository | Revision | Date | User | Message |
ICEsoft Public SVN Repository | #47948 | Thu Feb 18 08:08:05 MST 2016 | jack.van.ooststroom | Fixed JIRA |
Files Changed | ||||
MODIFY
/icepush/trunk/icepush/core/src/main/java/org/icepush/Browser.java
MODIFY /icepush/trunk/icepush/core/src/main/java/org/icepush/PushGroupManager.java MODIFY /icepush/trunk/icepush/core/src/main/java/org/icepush/LocalPushGroupManager.java MODIFY /icepush/trunk/icepush/core/src/main/java/org/icepush/LocalNotificationBroadcaster.java MODIFY /icepush/trunk/icepush/core/src/main/java/org/icepush/servlet/AsyncAdaptingServlet.java MODIFY /icepush/trunk/icepush/core/src/main/java/org/icepush/NoopPushGroupManager.java MODIFY /icepush/trunk/icepush/core/src/main/java/org/icepush/NotificationBroadcaster.java MODIFY /icepush/trunk/icepush/core/src/main/java/org/icepush/BlockingConnectionServer.java MODIFY /icepush/trunk/icepush/core/src/main/java/org/icepush/ConfirmationTimeout.java |