Skip to content

Commit 8e32775

Browse files
committed
Use test class name for thread prefix
(cherry picked from commit 6d98b74)
1 parent 852b797 commit 8e32775

File tree

4 files changed

+39
-4
lines changed

4 files changed

+39
-4
lines changed

pom.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -774,6 +774,7 @@
774774
<configuration>
775775
<java>
776776
<includes>
777+
<include>src/main/java/com/rabbitmq/AmqpClientTestExtension.java</include>
777778
<include>src/main/java/com/rabbitmq/client/ConnectionFactory.java</include>
778779
<include>src/main/java/com/rabbitmq/client/impl/NettyFrameHandlerFactory.java</include>
779780
<include>src/main/java/com/rabbitmq/client/impl/Environment.java</include>

src/main/java/com/rabbitmq/client/impl/NettyFrameHandlerFactory.java

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@
5757
import java.util.concurrent.TimeUnit;
5858
import java.util.concurrent.TimeoutException;
5959
import java.util.concurrent.atomic.AtomicBoolean;
60+
import java.util.concurrent.atomic.AtomicInteger;
6061
import java.util.concurrent.atomic.AtomicReference;
6162
import java.util.function.Consumer;
6263
import java.util.function.Function;
@@ -430,6 +431,8 @@ private static class AmqpHandler extends ChannelInboundHandlerAdapter {
430431
private final AtomicReference<CountDownLatch> writableLatch =
431432
new AtomicReference<>(new CountDownLatch(1));
432433
private final AtomicBoolean shutdownDispatched = new AtomicBoolean(false);
434+
private static final AtomicInteger SEQUENCE = new AtomicInteger(0);
435+
private final String id;
433436

434437
private AmqpHandler(
435438
int maxPayloadSize,
@@ -438,6 +441,7 @@ private AmqpHandler(
438441
this.maxPayloadSize = maxPayloadSize;
439442
this.closeSequence = closeSequence;
440443
this.willRecover = willRecover;
444+
this.id = "amqp-handler-" + SEQUENCE.getAndIncrement();
441445
}
442446

443447
@Override
@@ -501,6 +505,7 @@ public void channelWritabilityChanged(ChannelHandlerContext ctx) throws Exceptio
501505
public void channelInactive(ChannelHandlerContext ctx) {
502506
if (needToDispatchIoError()) {
503507
AMQConnection c = this.connection;
508+
LOGGER.debug("Dispatching shutdown when channel became inactive ({})", this.id);
504509
if (c.isOpen()) {
505510
// it is likely to be an IO exception
506511
this.dispatchShutdownToConnection(() -> c.handleIoError(null));
@@ -565,7 +570,7 @@ private CountDownLatch writableLatch() {
565570

566571
protected void dispatchShutdownToConnection(Runnable connectionShutdownRunnable) {
567572
if (this.shutdownDispatched.compareAndSet(false, true)) {
568-
String name = "rabbitmq-connection-shutdown";
573+
String name = "rabbitmq-connection-shutdown-" + this.id;
569574
AMQConnection c = this.connection;
570575
if (c == null || ch == null) {
571576
// not enough information, we dispatch in separate thread
@@ -575,7 +580,7 @@ protected void dispatchShutdownToConnection(Runnable connectionShutdownRunnable)
575580
if (this.willRecover.test(c.getCloseReason()) || ch.eventLoop().isShuttingDown()) {
576581
// the connection will recover, we don't want this to happen in the event loop,
577582
// it could cause a deadlock, so using a separate thread
578-
name = name + "-" + c;
583+
// name = name + "-" + c;
579584
Environment.newThread(connectionShutdownRunnable, name).start();
580585
} else {
581586
// no recovery, it is safe to dispatch in the event loop

src/test/java/com/rabbitmq/client/AmqpClientTestExtension.java

Lines changed: 30 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,9 @@
3131
import java.net.Socket;
3232
import java.util.concurrent.ExecutorService;
3333
import java.util.concurrent.Executors;
34+
import java.util.concurrent.ThreadFactory;
35+
import java.util.concurrent.atomic.AtomicLong;
36+
3437
import org.junit.jupiter.api.extension.AfterAllCallback;
3538
import org.junit.jupiter.api.extension.AfterEachCallback;
3639
import org.junit.jupiter.api.extension.BeforeAllCallback;
@@ -105,7 +108,8 @@ public ConditionEvaluationResult evaluateExecutionCondition(ExtensionContext con
105108
@Override
106109
public void beforeAll(ExtensionContext context) {
107110
if (TestUtils.isNetty()) {
108-
EventLoopGroup eventLoopGroup = new MultiThreadIoEventLoopGroup(NioIoHandler.newFactory());
111+
ThreadFactory tf = new NamedThreadFactory(context.getTestClass().get().getSimpleName() + "-");
112+
EventLoopGroup eventLoopGroup = new MultiThreadIoEventLoopGroup(tf, NioIoHandler.newFactory());
109113
store(context)
110114
.put("nettyEventLoopGroup", eventLoopGroup);
111115
TestUtils.eventLoopGroup(eventLoopGroup);
@@ -165,4 +169,29 @@ public void close() {
165169
this.executorService.shutdownNow();
166170
}
167171
}
172+
173+
private static class NamedThreadFactory implements ThreadFactory {
174+
175+
private final ThreadFactory backingThreadFactory;
176+
177+
private final String prefix;
178+
179+
private final AtomicLong count = new AtomicLong(0);
180+
181+
private NamedThreadFactory(String prefix) {
182+
this(Executors.defaultThreadFactory(), prefix);
183+
}
184+
185+
private NamedThreadFactory(ThreadFactory backingThreadFactory, String prefix) {
186+
this.backingThreadFactory = backingThreadFactory;
187+
this.prefix = prefix;
188+
}
189+
190+
@Override
191+
public Thread newThread(Runnable r) {
192+
Thread thread = this.backingThreadFactory.newThread(r);
193+
thread.setName(prefix + count.getAndIncrement());
194+
return thread;
195+
}
196+
}
168197
}

src/test/resources/logback-test.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
<logger name="com.rabbitmq.client.AmqpClientTestExtension" level="debug" />
99
<logger name="com.rabbitmq.client.test.server.TopicPermissions" level="debug" />
1010
<logger name="com.rabbitmq.client.impl.AbstractMetricsCollector" level="debug" />
11-
<logger name="com.rabbitmq.client.impl.NettyFrameHandlerFactory" level="warn" />
11+
<logger name="com.rabbitmq.client.impl.NettyFrameHandlerFactory" level="debug" />
1212

1313
<root level="warn">
1414
<appender-ref ref="STDOUT" />

0 commit comments

Comments
 (0)