From dc6a38ffa029210082e0fc0bba9faba912ef2438 Mon Sep 17 00:00:00 2001 From: Gary Russell Date: Mon, 17 Jul 2023 14:00:52 -0400 Subject: [PATCH] Fix Race with Delayed Idle Defer setting the initial `lastReceive` until after the consumer is created. The `delayedIdleEvent()` test in `ConcurrentMessageListenerContainerMockTests` could fail because the event might be published a few milliseconds before the expected 500. --- .../kafka/listener/KafkaMessageListenerContainer.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/spring-kafka/src/main/java/org/springframework/kafka/listener/KafkaMessageListenerContainer.java b/spring-kafka/src/main/java/org/springframework/kafka/listener/KafkaMessageListenerContainer.java index b0dd1282..99c872c3 100644 --- a/spring-kafka/src/main/java/org/springframework/kafka/listener/KafkaMessageListenerContainer.java +++ b/spring-kafka/src/main/java/org/springframework/kafka/listener/KafkaMessageListenerContainer.java @@ -766,7 +766,7 @@ public class KafkaMessageListenerContainer // NOSONAR line count private boolean taskSchedulerExplicitlySet; - private long lastReceive = System.currentTimeMillis(); + private long lastReceive; private long lastAlertAt = this.lastReceive; @@ -1299,6 +1299,7 @@ public class KafkaMessageListenerContainer // NOSONAR line count initAssignedPartitions(); publishConsumerStartedEvent(); Throwable exitThrowable = null; + this.lastReceive = System.currentTimeMillis(); while (isRunning()) { try { pollAndInvoke();