From 6e40edbc21b80a0f7f6f96c6c9f77afad52e5f83 Mon Sep 17 00:00:00 2001 From: nmittler Date: Wed, 25 May 2016 06:54:31 -0700 Subject: [PATCH] Add trailers to Status for BlockingResponseStream --- stub/src/main/java/io/grpc/stub/ClientCalls.java | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/stub/src/main/java/io/grpc/stub/ClientCalls.java b/stub/src/main/java/io/grpc/stub/ClientCalls.java index bda0df54d5..ba2f1fff0c 100644 --- a/stub/src/main/java/io/grpc/stub/ClientCalls.java +++ b/stub/src/main/java/io/grpc/stub/ClientCalls.java @@ -41,6 +41,7 @@ import io.grpc.ClientCall; import io.grpc.Metadata; import io.grpc.MethodDescriptor; import io.grpc.Status; +import io.grpc.StatusRuntimeException; import java.util.Iterator; import java.util.NoSuchElementException; @@ -437,8 +438,10 @@ public class ClientCalls { throw Status.CANCELLED.withCause(ie).asRuntimeException(); } } - if (last instanceof Status) { - throw ((Status) last).asRuntimeException(); + if (last instanceof StatusRuntimeException) { + // Rethrow the exception with a new stacktrace. + StatusRuntimeException e = (StatusRuntimeException) last; + throw e.getStatus().asRuntimeException(e.getTrailers()); } return last != this; } @@ -482,7 +485,7 @@ public class ClientCalls { if (status.isOk()) { buffer.add(BlockingResponseStream.this); } else { - buffer.add(status); + buffer.add(status.asRuntimeException(trailers)); } done = true; }