From b706992109864d1b012a36b1a1fee4701e704ec7 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 684bd2f..be935e2 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 @@ -1179,6 +1179,9 @@ public class KinesisMessageDrivenChannelAdapter extends MessageProducerSupport i } } } + synchronized (KinesisMessageDrivenChannelAdapter.this.consumerInvokers) { + KinesisMessageDrivenChannelAdapter.this.consumerInvokers.remove(this); + } } @Override