diff --git a/netty/src/main/java/io/grpc/netty/WriteBufferingAndExceptionHandler.java b/netty/src/main/java/io/grpc/netty/WriteBufferingAndExceptionHandler.java index 8312c9f023..60c48c733d 100644 --- a/netty/src/main/java/io/grpc/netty/WriteBufferingAndExceptionHandler.java +++ b/netty/src/main/java/io/grpc/netty/WriteBufferingAndExceptionHandler.java @@ -85,7 +85,8 @@ final class WriteBufferingAndExceptionHandler extends ChannelDuplexHandler { public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) { assert cause != null; Throwable previousFailure = failCause; - Status status = Utils.statusFromThrowable(cause); + Status status = Utils.statusFromThrowable(cause) + .augmentDescription("Channel Pipeline: " + ctx.pipeline().names()); failWrites(status.asRuntimeException()); // Check to see if the channel is active and this is the first failure. If a downstream // handler triggers an exception in close(), avoid being reentrant. This is not obviously diff --git a/netty/src/test/java/io/grpc/netty/NettyClientTransportTest.java b/netty/src/test/java/io/grpc/netty/NettyClientTransportTest.java index 332a459c27..75e40bb244 100644 --- a/netty/src/test/java/io/grpc/netty/NettyClientTransportTest.java +++ b/netty/src/test/java/io/grpc/netty/NettyClientTransportTest.java @@ -285,7 +285,9 @@ public class NettyClientTransportTest { rpc.waitForClose(); fail("expected exception"); } catch (ExecutionException ex) { - assertSame(failureStatus, ((StatusException) ex.getCause()).getStatus()); + Status actual = ((StatusException) ex.getCause()).getStatus(); + assertSame(failureStatus.getCode(), actual.getCode()); + assertThat(actual.getDescription()).contains(failureStatus.getDescription()); } } @@ -372,7 +374,9 @@ public class NettyClientTransportTest { rpc.waitForClose(); fail("expected exception"); } catch (ExecutionException ex) { - assertSame(failureStatus, ((StatusException) ex.getCause()).getStatus()); + Status actual = ((StatusException) ex.getCause()).getStatus(); + assertSame(failureStatus.getCode(), actual.getCode()); + assertThat(actual.getDescription()).contains(failureStatus.getDescription()); } }