Uploaded image for project: 'Spring Integration'
  1. Spring Integration
  2. INT-4466

Using multiple instances of aggregator per cluster may be problematic

    Details

    • Type: Defect
    • Status: Closed
    • Priority: Minor
    • Resolution: Complete
    • Affects Version/s: 4.3.16
    • Fix Version/s: 5.1 M1, 5.0.6, 4.3.17
    • Component/s: Core
    • Labels:

      Description

      A ScheduledFuture<?> instance stored in the Map<UUID, ScheduledFuture<?>> is local to an application instance instantiated it.

      Canceling of the ScheduledFuture<?> stored in this map is performed only when a new Message belonging to a MessageGroup, for which the ScheduledFuture instance was created, arrives the handleMessageInternal method of AbstractCorrelatingMessageHandler.

      Suppose there are two instances of aggregator A and B and both instances have created ScheduledFuture<?> instance for the same MessageGroup. After a message arrives the handleMessageInternal of instance A, instance A proceeds with cancellation of its ScheduledFuture for the MessageGroup that the Message arrived will be added to, but the ScheduledFuture, scheduled by instance B can still fire if no new message reaches instance B, which can happen before instance A cancels its ScheduledFuture, and can complete the MessageGroup.
      Until this gets fixed, it is unsafe to allow two or more application instances handle the same MessageGroup. Limiting to one instance of aggregator within a cluster will prevent this from happening, however it will also limit the scaling out of aggregation process.

        Attachments

          Activity

            People

            • Assignee:
              abilan Artem Bilan
              Reporter:
              hanishi Haruhiko Nishi
            • Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: