From f9d51989a88bd4da646f825338ea25399d43311f Mon Sep 17 00:00:00 2001 From: Gary Russell Date: Thu, 22 Mar 2018 15:10:13 -0400 Subject: [PATCH] INT-4441: Fix ACMH Concurrency Problem JIRA: https://jira.spring.io/browse/INT-4441 Possible concurrent updates to `AbstractCorrelatingMessageHandler.groupIds` and `expireGroupScheduledFutures`. --- .../aggregator/AbstractCorrelatingMessageHandler.java | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/spring-integration-core/src/main/java/org/springframework/integration/aggregator/AbstractCorrelatingMessageHandler.java b/spring-integration-core/src/main/java/org/springframework/integration/aggregator/AbstractCorrelatingMessageHandler.java index f4e4f15589..8ff9370bb4 100644 --- a/spring-integration-core/src/main/java/org/springframework/integration/aggregator/AbstractCorrelatingMessageHandler.java +++ b/spring-integration-core/src/main/java/org/springframework/integration/aggregator/AbstractCorrelatingMessageHandler.java @@ -20,12 +20,11 @@ import java.util.Collection; import java.util.Collections; import java.util.Comparator; import java.util.Date; -import java.util.HashMap; -import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; import java.util.UUID; +import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ScheduledFuture; import java.util.concurrent.locks.Lock; @@ -98,9 +97,9 @@ public abstract class AbstractCorrelatingMessageHandler extends AbstractMessageP private final Comparator> sequenceNumberComparator = new MessageSequenceComparator(); - private final Map> expireGroupScheduledFutures = new HashMap<>(); + private final Map> expireGroupScheduledFutures = new ConcurrentHashMap<>(); - private final Set groupIds = new HashSet<>(); + private final Set groupIds = ConcurrentHashMap.newKeySet(); private MessageGroupProcessor outputProcessor;