Skip to content

Commit 6789fe8

Browse files
committed
in-progress changes.
1 parent ce7171d commit 6789fe8

File tree

3 files changed

+31
-3
lines changed

3 files changed

+31
-3
lines changed

core/src/main/java/io/grpc/internal/DelayedClientCall.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -300,7 +300,6 @@ private void drainPendingCalls() {
300300
}
301301
for (Runnable runnable : toRun) {
302302
// Must not call transport while lock is held to prevent deadlocks.
303-
// TODO(ejona): exception handling
304303
runnable.run();
305304
}
306305
toRun.clear();

stub/src/main/java/io/grpc/stub/ClientCalls.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -170,12 +170,12 @@ public static <ReqT, RespT> RespT blockingUnaryCall(
170170
// Now wait for onClose() to be called, so interceptors can clean up
171171
}
172172
}
173-
executor.shutdown();
174173
return getUnchecked(responseFuture);
175174
} catch (RuntimeException | Error e) {
176175
// Something very bad happened. All bets are off; it may be dangerous to wait for onClose().
177176
throw cancelThrow(call, e);
178177
} finally {
178+
executor.shutdown();
179179
if (interrupt) {
180180
Thread.currentThread().interrupt();
181181
}
@@ -822,7 +822,7 @@ public void waitAndDrain() throws InterruptedException {
822822
}
823823
}
824824
do {
825-
runQuietly(runnable);
825+
runnable.run();
826826
} while ((runnable = poll()) != null);
827827
}
828828

stub/src/test/java/io/grpc/stub/ClientCallsTest.java

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -163,6 +163,35 @@ public void start(io.grpc.ClientCall.Listener<String> listener, Metadata headers
163163
}
164164
}
165165

166+
@Test
167+
public void unaryBlockingCallFailed_outboundMessageSizeExceeded() throws Exception {
168+
Integer req = 2;
169+
final Integer resp = 3;
170+
171+
class BasicUnaryResponse implements UnaryMethod<Integer, Integer> {
172+
Integer request;
173+
174+
@Override public void invoke(Integer request, StreamObserver<Integer> responseObserver) {
175+
this.request = request;
176+
responseObserver.onNext(resp);
177+
responseObserver.onCompleted();
178+
}
179+
}
180+
BasicUnaryResponse service = new BasicUnaryResponse();
181+
server = InProcessServerBuilder.forName("simple-reply").directExecutor()
182+
.addService(ServerServiceDefinition.builder("some")
183+
.addMethod(UNARY_METHOD, ServerCalls.asyncUnaryCall(service))
184+
.build())
185+
.build().start();
186+
channel = InProcessChannelBuilder.forName("simple-reply").directExecutor().build();
187+
try {
188+
ClientCalls.blockingUnaryCall(channel, UNARY_METHOD, CallOptions.DEFAULT.withMaxOutboundMessageSize(0), req);
189+
fail("Should fail");
190+
} catch (StatusRuntimeException e) {
191+
System.out.println("err");
192+
}
193+
}
194+
166195
@Test
167196
public void blockingUnaryCall2_success() throws Exception {
168197
Integer req = 2;

0 commit comments

Comments
 (0)