From 2d8f7d1d7e46c620eb78d2d0d8d281d1252ec965 Mon Sep 17 00:00:00 2001 From: Artem Bilan Date: Thu, 12 Sep 2019 16:58:02 -0400 Subject: [PATCH] Fix race condition in the KinesisMDChannelAdapter The `KinesisMessageDrivenChannelAdapter` may exit its `active` state, but `consumerInvokers` won't be cleared in the main consumer loop **Cherry-pick to master** --- .../inbound/kinesis/KinesisMessageDrivenChannelAdapter.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/main/java/org/springframework/integration/aws/inbound/kinesis/KinesisMessageDrivenChannelAdapter.java b/src/main/java/org/springframework/integration/aws/inbound/kinesis/KinesisMessageDrivenChannelAdapter.java index 56eeb81..9da0988 100644 --- a/src/main/java/org/springframework/integration/aws/inbound/kinesis/KinesisMessageDrivenChannelAdapter.java +++ b/src/main/java/org/springframework/integration/aws/inbound/kinesis/KinesisMessageDrivenChannelAdapter.java @@ -1191,6 +1191,9 @@ public class KinesisMessageDrivenChannelAdapter extends MessageProducerSupport i } } } + synchronized (KinesisMessageDrivenChannelAdapter.this.consumerInvokers) { + KinesisMessageDrivenChannelAdapter.this.consumerInvokers.remove(this); + } } @Override