ICEpush
  1. ICEpush
  2. PUSH-368

Improve LocalPushGroupManager's queue handling

    Details

      Description

      Improve LocalPushGroupManager's queue handling to make "... queue maximum size reached." messages less frequent under load while maintaining the same queue size.

        Activity

        Hide
        Jack Van Ooststroom added a comment -

        ICEfaces 4:

        Sending core/src/main/java/org/icepush/LocalPushGroupManager.java
        Sending core/src/main/java/org/icepush/PushConfiguration.java
        Transmitting file data ..
        Committed revision 46004.

        Show
        Jack Van Ooststroom added a comment - ICEfaces 4: Sending core/src/main/java/org/icepush/LocalPushGroupManager.java Sending core/src/main/java/org/icepush/PushConfiguration.java Transmitting file data .. Committed revision 46004.
        Hide
        Jack Van Ooststroom added a comment -

        ICEfaces 3:

        Sending core/src/main/java/org/icepush/LocalPushGroupManager.java
        Sending core/src/main/java/org/icepush/PushConfiguration.java
        Transmitting file data ..
        Committed revision 46010.

        Show
        Jack Van Ooststroom added a comment - ICEfaces 3: Sending core/src/main/java/org/icepush/LocalPushGroupManager.java Sending core/src/main/java/org/icepush/PushConfiguration.java Transmitting file data .. Committed revision 46010.
        Hide
        Jack Van Ooststroom added a comment - - edited

        Before a Notification or OutOfBandNotification is added to the notificationQueue it now checks to see if a similar Notification or OutOfBandNotification is not already contained in the notificationQueue. If not contained it is being added and if contained it is being ignored due to duplication. The Java Concurrency logic had to be expanded to deal with this. In addition the Notification, OutOfBandNotification, and PushConfiguration classes now override the equals(Object) and hashCode() methods to allow checking for duplications.

        Marking this one as FIXED.

        Show
        Jack Van Ooststroom added a comment - - edited Before a Notification or OutOfBandNotification is added to the notificationQueue it now checks to see if a similar Notification or OutOfBandNotification is not already contained in the notificationQueue . If not contained it is being added and if contained it is being ignored due to duplication. The Java Concurrency logic had to be expanded to deal with this. In addition the Notification , OutOfBandNotification , and PushConfiguration classes now override the equals(Object) and hashCode() methods to allow checking for duplications. Marking this one as FIXED.
        Hide
        Jack Van Ooststroom added a comment -

        It seems possible that the Notification queue consumer thread can miss a Notification resulting it possibly in idle mode.

        Show
        Jack Van Ooststroom added a comment - It seems possible that the Notification queue consumer thread can miss a Notification resulting it possibly in idle mode.
        Hide
        Jack Van Ooststroom added a comment - - edited

        ICEfaces 3:

        Sending core/src/main/java/org/icepush/LocalPushGroupManager.java
        Transmitting file data .
        Committed revision 47625.

        Show
        Jack Van Ooststroom added a comment - - edited ICEfaces 3: Sending core/src/main/java/org/icepush/LocalPushGroupManager.java Transmitting file data . Committed revision 47625.
        Hide
        Jack Van Ooststroom added a comment - - edited

        ICEfaces 4:

        Sending core/src/main/java/org/icepush/LocalPushGroupManager.java
        Transmitting file data .
        Committed revision 47792.

        Show
        Jack Van Ooststroom added a comment - - edited ICEfaces 4: Sending core/src/main/java/org/icepush/LocalPushGroupManager.java Transmitting file data . Committed revision 47792.
        Hide
        Jack Van Ooststroom added a comment -

        Before the await() method is invoked it is first checked to see if the notificationQueue is actually empty using the appropriate locking. In addition it is ensured that the final invocation of Notification.run() is done outside of the locking block. Marking this one as FIXED again.

        Show
        Jack Van Ooststroom added a comment - Before the await() method is invoked it is first checked to see if the notificationQueue is actually empty using the appropriate locking. In addition it is ensured that the final invocation of Notification.run() is done outside of the locking block. Marking this one as FIXED again.

          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: