Skip to content

Commit 4b459b6

Browse files
committed
Make FutureCancelHandler sharable
1 parent 9bf797e commit 4b459b6

File tree

3 files changed

+14
-3
lines changed

3 files changed

+14
-3
lines changed

http-clients/netty-nio-client/src/main/java/software/amazon/awssdk/http/nio/netty/internal/ChannelPipelineInitializer.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ public void channelCreated(Channel ch) {
8282
pipeline.addLast(new OldConnectionReaperHandler(configuration.connectionTtlMillis()));
8383
}
8484

85-
pipeline.addLast(new FutureCancelHandler());
85+
pipeline.addLast(FutureCancelHandler.getInstance());
8686
pipeline.addLast(new UnusedChannelExceptionHandler());
8787
pipeline.addLast(new LoggingHandler(LogLevel.DEBUG));
8888
}

http-clients/netty-nio-client/src/main/java/software/amazon/awssdk/http/nio/netty/internal/FutureCancelHandler.java

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
import static software.amazon.awssdk.http.nio.netty.internal.ChannelAttributeKey.EXECUTION_ID_KEY;
1919
import static software.amazon.awssdk.http.nio.netty.internal.ChannelAttributeKey.REQUEST_CONTEXT_KEY;
2020

21+
import io.netty.channel.ChannelHandler;
2122
import io.netty.channel.ChannelHandlerContext;
2223
import io.netty.channel.SimpleChannelInboundHandler;
2324
import io.netty.util.ReferenceCountUtil;
@@ -28,7 +29,13 @@
2829
* Closes the channel if the execution future has been cancelled.
2930
*/
3031
@SdkInternalApi
31-
public class FutureCancelHandler extends SimpleChannelInboundHandler {
32+
@ChannelHandler.Sharable
33+
public final class FutureCancelHandler extends SimpleChannelInboundHandler {
34+
private static final FutureCancelHandler INSTANCE = new FutureCancelHandler();
35+
36+
private FutureCancelHandler() {
37+
}
38+
3239
@Override
3340
protected void channelRead0(ChannelHandlerContext ctx, Object o) {
3441
ReferenceCountUtil.retain(o);
@@ -48,6 +55,10 @@ public void exceptionCaught(ChannelHandlerContext ctx, Throwable e) {
4855
}
4956
}
5057

58+
public static FutureCancelHandler getInstance() {
59+
return INSTANCE;
60+
}
61+
5162
private boolean cancelled(ChannelHandlerContext ctx, Throwable t) {
5263
if (!(t instanceof FutureCancelledException)) {
5364
return false;

http-clients/netty-nio-client/src/test/java/software/amazon/awssdk/http/nio/netty/internal/FutureCancelHandlerTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@
4242
@RunWith(MockitoJUnitRunner.class)
4343
public class FutureCancelHandlerTest {
4444

45-
private FutureCancelHandler handler = new FutureCancelHandler();
45+
private FutureCancelHandler handler = FutureCancelHandler.getInstance();
4646

4747
@Mock
4848
private ChannelHandlerContext ctx;

0 commit comments

Comments
 (0)