This is an automated email from the ASF dual-hosted git repository.
davsclaus pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git
The following commit(s) were added to refs/heads/main by this push:
new 8d82d17f004f camel-lumberjack: fix flaky tests by awaiting Netty
shutdown
8d82d17f004f is described below
commit 8d82d17f004fb706065dee0b18c75c1983089899
Author: Claus Ibsen <[email protected]>
AuthorDate: Thu Jul 16 12:09:42 2026 +0200
camel-lumberjack: fix flaky tests by awaiting Netty shutdown
- Await shutdownGracefully() on all Netty thread groups in
LumberjackServer.stop()
so the port is fully released before the next test binds a new server
- Await channel.close() and event loop shutdown in test client
(LumberjackUtil)
to prevent half-open connections from causing spurious ack count
mismatches
- Make ErrorProcessor.count thread-safe with AtomicInteger in disconnection
test
- Add explicit 30s Awaitility timeout in LumberjackUtil (was relying on 10s
default)
Closes #24774
Co-Authored-By: Claude Opus 4.6 <[email protected]>
---
.../apache/camel/component/lumberjack/io/LumberjackServer.java | 8 +++++---
.../camel/component/lumberjack/LumberjackDisconnectionTest.java | 6 +++---
.../org/apache/camel/component/lumberjack/LumberjackUtil.java | 7 ++++---
3 files changed, 12 insertions(+), 9 deletions(-)
diff --git
a/components/camel-lumberjack/src/main/java/org/apache/camel/component/lumberjack/io/LumberjackServer.java
b/components/camel-lumberjack/src/main/java/org/apache/camel/component/lumberjack/io/LumberjackServer.java
index 6aa80d1a0539..8a4222f46683 100644
---
a/components/camel-lumberjack/src/main/java/org/apache/camel/component/lumberjack/io/LumberjackServer.java
+++
b/components/camel-lumberjack/src/main/java/org/apache/camel/component/lumberjack/io/LumberjackServer.java
@@ -107,9 +107,11 @@ public final class LumberjackServer {
// Wait for the channel to be indeed closed before shutting the
groups & service
channel.close().sync();
} finally {
- bossGroup.shutdownGracefully();
- workerGroup.shutdownGracefully();
- executorService.shutdownGracefully();
+ // Await graceful shutdown of all thread groups so the port is
fully released
+ // before the next test (or consumer restart) binds a new server
+ bossGroup.shutdownGracefully().syncUninterruptibly();
+ workerGroup.shutdownGracefully().syncUninterruptibly();
+ executorService.shutdownGracefully().syncUninterruptibly();
}
LOG.info("LUMBERJACK server is stopped (host={}, port={}).", host,
port);
diff --git
a/components/camel-lumberjack/src/test/java/org/apache/camel/component/lumberjack/LumberjackDisconnectionTest.java
b/components/camel-lumberjack/src/test/java/org/apache/camel/component/lumberjack/LumberjackDisconnectionTest.java
index ad7d046e2378..3ea40e32eda2 100644
---
a/components/camel-lumberjack/src/test/java/org/apache/camel/component/lumberjack/LumberjackDisconnectionTest.java
+++
b/components/camel-lumberjack/src/test/java/org/apache/camel/component/lumberjack/LumberjackDisconnectionTest.java
@@ -19,6 +19,7 @@ package org.apache.camel.component.lumberjack;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
+import java.util.concurrent.atomic.AtomicInteger;
import org.apache.camel.Exchange;
import org.apache.camel.Processor;
@@ -76,12 +77,11 @@ public class LumberjackDisconnectionTest extends
CamelTestSupport {
* This processor throws an exception as the fourth message received.
*/
private static final class ErrorProcessor implements Processor {
- int count;
+ private final AtomicInteger count = new AtomicInteger();
@Override
public void process(Exchange exchange) {
- count++;
- if (count == 4) {
+ if (count.incrementAndGet() == 4) {
throw new RuntimeCamelException("Ooops");
}
}
diff --git
a/components/camel-lumberjack/src/test/java/org/apache/camel/component/lumberjack/LumberjackUtil.java
b/components/camel-lumberjack/src/test/java/org/apache/camel/component/lumberjack/LumberjackUtil.java
index 32e14079b0c1..06008beff30c 100644
---
a/components/camel-lumberjack/src/test/java/org/apache/camel/component/lumberjack/LumberjackUtil.java
+++
b/components/camel-lumberjack/src/test/java/org/apache/camel/component/lumberjack/LumberjackUtil.java
@@ -21,6 +21,7 @@ import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
+import java.util.concurrent.TimeUnit;
import javax.net.ssl.SSLEngine;
@@ -94,16 +95,16 @@ final class LumberjackUtil {
// send 5 frame windows, without pausing
windows.stream().forEach(window ->
channel.writeAndFlush(readSample(String.format("io/window%s.bin", window))));
if (waitForResult) {
- Awaitility.await().until(() -> windows.size() ==
responses.size());
+ Awaitility.await().atMost(30, TimeUnit.SECONDS).until(() ->
windows.size() == responses.size());
}
- channel.close();
+ channel.close().sync();
synchronized (responses) {
return responses;
}
} finally {
- eventLoopGroup.shutdownGracefully();
+ eventLoopGroup.shutdownGracefully().syncUninterruptibly();
}
}