diff --git a/handler/src/main/java/io/netty/handler/timeout/WriteTimeoutHandler.java b/handler/src/main/java/io/netty/handler/timeout/WriteTimeoutHandler.java index fb902f379e..b7ef4dd277 100644 --- a/handler/src/main/java/io/netty/handler/timeout/WriteTimeoutHandler.java +++ b/handler/src/main/java/io/netty/handler/timeout/WriteTimeoutHandler.java @@ -112,8 +112,10 @@ public class WriteTimeoutHandler extends ChannelOutboundHandlerAdapter { final ScheduledFuture sf = ctx.executor().schedule(new Runnable() { @Override public void run() { - if (future.tryFailure(WriteTimeoutException.INSTANCE)) { - // If succeeded to mark as failure, notify the pipeline, too. + // Was not written yet so issue a write timeout + // The future itself will be failed with a ClosedChannelException once the close() was issued + // See https://github.com/netty/netty/issues/2159 + if (!future.isDone()) { try { writeTimedOut(ctx); } catch (Throwable t) {