From 8692e76f1e57ef5c87eddeef2bcfa896a9515a61 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 95f90548..daa41eff 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 @@ -817,7 +817,7 @@ public class KafkaMessageListenerContainer // NOSONAR line count private boolean taskSchedulerExplicitlySet; - private long lastReceive = System.currentTimeMillis(); + private long lastReceive; private long lastAlertAt = this.lastReceive; @@ -1389,6 +1389,7 @@ public class KafkaMessageListenerContainer // NOSONAR line count initialize(); Throwable exitThrowable = null; boolean failedAuthRetry = false; + this.lastReceive = System.currentTimeMillis(); while (isRunning()) { try { pollAndInvoke();