|
34 | 34 | import io.netty.handler.codec.http.HttpResponse;
|
35 | 35 | import io.netty.handler.codec.http.HttpUtil;
|
36 | 36 | import io.netty.handler.codec.http.LastHttpContent;
|
| 37 | +import io.netty.handler.timeout.ReadTimeoutException; |
| 38 | +import io.netty.handler.timeout.WriteTimeoutException; |
37 | 39 | import io.netty.util.AttributeKey;
|
38 | 40 | import java.io.IOException;
|
39 | 41 | import java.nio.ByteBuffer;
|
@@ -115,9 +117,10 @@ private static void finalizeRequest(RequestContext requestContext, ChannelHandle
|
115 | 117 | @Override
|
116 | 118 | public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws Exception {
|
117 | 119 | RequestContext requestContext = ctx.channel().attr(REQUEST_CONTEXT_KEY).get();
|
118 |
| - log.error("Exception processing request: {}", requestContext.executeRequest().request(), cause); |
119 |
| - requestContext.handler().onError(cause); |
120 |
| - executeFuture(ctx).completeExceptionally(cause); |
| 120 | + log.debug("Exception processing request: {}", requestContext.executeRequest().request(), cause); |
| 121 | + Throwable throwable = wrapException(cause); |
| 122 | + requestContext.handler().onError(throwable); |
| 123 | + executeFuture(ctx).completeExceptionally(throwable); |
121 | 124 | runAndLogError("Could not release channel back to the pool", () -> closeAndRelease(ctx));
|
122 | 125 | }
|
123 | 126 |
|
@@ -355,4 +358,14 @@ protected void channelRead0(ChannelHandlerContext ctx, HttpObject obj) throws Ex
|
355 | 358 | ctx.pipeline().remove(this);
|
356 | 359 | }
|
357 | 360 | }
|
| 361 | + |
| 362 | + private Throwable wrapException(Throwable originalCause) { |
| 363 | + if (originalCause instanceof ReadTimeoutException) { |
| 364 | + return new IOException("Read timed out", originalCause); |
| 365 | + } else if (originalCause instanceof WriteTimeoutException) { |
| 366 | + return new IOException("Write timed out", originalCause); |
| 367 | + } |
| 368 | + |
| 369 | + return originalCause; |
| 370 | + } |
358 | 371 | }
|
0 commit comments