ICEpush
  1. ICEpush
  2. PUSH-367

ConcurrentModificationException thrown for pendingNotifications in LocalPushGroupManager

    Details

    • Type: Bug Bug
    • Status: Closed
    • Priority: Major Major
    • Resolution: Fixed
    • Affects Version/s: EE-3.3.0.GA_P03
    • Fix Version/s: EE-3.3.0.GA_P04
    • Component/s: Push Server
    • Labels:
      None
    • Environment:
      ICEpush

      Description

      A ConcurrentModificationException is thrown for concurrent access to the pendingNotifications in LocalPushGroupManager:

      WARNING: Failed to respond to request
      java.util.ConcurrentModificationException
      at java.util.HashMap$HashIterator.nextEntry(HashMap.java:839)
      at java.util.HashMap$KeyIterator.next(HashMap.java:874)
      at java.util.AbstractCollection.toArray(AbstractCollection.java:195)
      at org.icepush.LocalPushGroupManager.getPendingNotifications(LocalPushGroupManager.java:133)
      at org.icepush.BlockingConnectionServer$RunningServer.service(BlockingConnectionServer.java:338)
      at org.icepush.BlockingConnectionServer.service(BlockingConnectionServer.java:96)
      at org.icepush.SequenceTaggingServer.service(SequenceTaggingServer.java:54)
      at org.icepush.PushStormDetectionServer.service(PushStormDetectionServer.java:52)
      at org.icepush.servlet.AsyncAdaptingServlet.service(AsyncAdaptingServlet.java:68)
      at org.icepush.servlet.EnvironmentAdaptingServlet.service(EnvironmentAdaptingServlet.java:56)
      at org.icepush.servlet.PathDispatcher.service(PathDispatcher.java:39)
      at org.icepush.servlet.BrowserDispatcher$BrowserEntry.service(BrowserDispatcher.java:101)
      at org.icepush.servlet.BrowserDispatcher.service(BrowserDispatcher.java:45)
      at org.icepush.servlet.ConfigurationServlet.service(ConfigurationServlet.java:101)
      at org.icepush.servlet.PathDispatcher.service(PathDispatcher.java:39)
      at org.icepush.servlet.MainServlet.service(MainServlet.java:131)
      at org.icefaces.impl.push.servlet.ICEpushResourceHandler$ICEpushResourceHandlerImpl.handleResourceRequest(ICEpushResourceHandler.java:235)
      at org.icefaces.impl.push.servlet.ICEpushResourceHandler.handleResourceRequest(ICEpushResourceHandler.java:128)
      at org.icefaces.impl.application.SessionTimeoutMonitor.handleSessionAwareResourceRequest(SessionTimeoutMonitor.java:63)
      at org.icefaces.impl.application.SessionAwareResourceHandlerWrapper.handleResourceRequest(SessionAwareResourceHandlerWrapper.java:40)
      at javax.faces.application.ResourceHandlerWrapper.handleResourceRequest(ResourceHandlerWrapper.java:125)
      at javax.faces.application.ResourceHandlerWrapper.handleResourceRequest(ResourceHandlerWrapper.java:125)
      at javax.faces.application.ResourceHandlerWrapper.handleResourceRequest(ResourceHandlerWrapper.java:125)
      at javax.faces.application.ResourceHandlerWrapper.handleResourceRequest(ResourceHandlerWrapper.java:125)
      at org.icefaces.impl.application.AuxUploadResourceHandler.handleResourceRequest(AuxUploadResourceHandler.java:82)
      at javax.faces.webapp.FacesServlet.service(FacesServlet.java:591)
      at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
      at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
      at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
      at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
      at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
      at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
      at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
      at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:504)
      at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170)
      at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
      at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950)
      at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
      at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:421)
      at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1074)
      at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:611)
      at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316)
      at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
      at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
      at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
      at java.lang.Thread.run(Thread.java:744)

      This one is similar to PUSH-277 but requires additional backporting.

        Activity

        Hide
        Jack Van Ooststroom added a comment -

        Sending core/src/main/java/org/icepush/BlockingConnectionServer.java
        Sending core/src/main/java/org/icepush/LocalNotificationBroadcaster.java
        Sending core/src/main/java/org/icepush/LocalPushGroupManager.java
        Sending core/src/main/java/org/icepush/NoopPushGroupManager.java
        Sending core/src/main/java/org/icepush/NotificationBroadcaster.java
        Sending core/src/main/java/org/icepush/PushGroupManager.java
        Sending core/src/main/java/org/icepush/PushID.java
        Sending core/src/main/java/org/icepush/servlet/AsyncAdaptingServlet.java
        Transmitting file data ........
        Committed revision 46008.

        Sending eps/src/main/java/com/icesoft/push/DynamicPushGroupManager.java
        Sending eps/src/main/java/com/icesoft/push/LocalPushGroupManager.java
        Sending eps/src/main/java/com/icesoft/push/RemotePushGroupManager.java
        Sending eps/src/main/java/com/icesoft/push/messaging/MessagePayload.java
        Sending eps/src/main/java/com/icesoft/push/messaging/PushMessageService.java
        Transmitting file data .....
        Committed revision 43006.

        Show
        Jack Van Ooststroom added a comment - Sending core/src/main/java/org/icepush/BlockingConnectionServer.java Sending core/src/main/java/org/icepush/LocalNotificationBroadcaster.java Sending core/src/main/java/org/icepush/LocalPushGroupManager.java Sending core/src/main/java/org/icepush/NoopPushGroupManager.java Sending core/src/main/java/org/icepush/NotificationBroadcaster.java Sending core/src/main/java/org/icepush/PushGroupManager.java Sending core/src/main/java/org/icepush/PushID.java Sending core/src/main/java/org/icepush/servlet/AsyncAdaptingServlet.java Transmitting file data ........ Committed revision 46008. Sending eps/src/main/java/com/icesoft/push/DynamicPushGroupManager.java Sending eps/src/main/java/com/icesoft/push/LocalPushGroupManager.java Sending eps/src/main/java/com/icesoft/push/RemotePushGroupManager.java Sending eps/src/main/java/com/icesoft/push/messaging/MessagePayload.java Sending eps/src/main/java/com/icesoft/push/messaging/PushMessageService.java Transmitting file data ..... Committed revision 43006.
        Hide
        Jack Van Ooststroom added a comment -

        Similar to PUSH-277 as there is no Java Concurrency version of a Set proper locking has been introduced to deal with this. In addition, some of the changes applied to ICEfaces 4 in this area dealing with collections have been backported to ICEfaces 3.

        Marking this one as FIXED.

        Show
        Jack Van Ooststroom added a comment - Similar to PUSH-277 as there is no Java Concurrency version of a Set proper locking has been introduced to deal with this. In addition, some of the changes applied to ICEfaces 4 in this area dealing with collections have been backported to ICEfaces 3. Marking this one as FIXED.
        Hide
        Liana Munroe added a comment -

        Reopening due to issue found in ICE-10807.

        Show
        Liana Munroe added a comment - Reopening due to issue found in ICE-10807.
        Hide
        Jack Van Ooststroom added a comment -

        Sending core/src/main/java/org/icepush/BlockingConnectionServer.java
        Transmitting file data .
        Committed revision 46109.

        Show
        Jack Van Ooststroom added a comment - Sending core/src/main/java/org/icepush/BlockingConnectionServer.java Transmitting file data . Committed revision 46109.
        Hide
        Jack Van Ooststroom added a comment -

        Added two fixes:

        1. Avoid adding duplicate Push-IDs to the Notified Push-ID Queue.
        2. Fixed the removal of Push-IDs from the Notified Push-ID Queue after sending the response.

        Marking this one as FIXED again.

        Show
        Jack Van Ooststroom added a comment - Added two fixes: 1. Avoid adding duplicate Push-IDs to the Notified Push-ID Queue. 2. Fixed the removal of Push-IDs from the Notified Push-ID Queue after sending the response. Marking this one as FIXED again.
        Hide
        Liana Munroe added a comment -

        Verified ICE-10807 is resolved.

        Show
        Liana Munroe added a comment - Verified ICE-10807 is resolved.

          People

          • Assignee:
            Jack Van Ooststroom
            Reporter:
            Jack Van Ooststroom
          • Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved: