Skip to content

Commit 4d4278b

Browse files
committed
Trying to find cases if the ServerCall listener callbacks for onComplete don't get called if there is an application error.
1 parent c8be933 commit 4d4278b

File tree

6 files changed

+45
-21
lines changed

6 files changed

+45
-21
lines changed

examples/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ dependencies {
4545
protobuf {
4646
protoc { artifact = "com.google.protobuf:protoc:${protocVersion}" }
4747
plugins {
48-
grpc { artifact = "io.grpc:protoc-gen-grpc-java:${grpcVersion}" }
48+
grpc { artifact = "io.grpc:protoc-gen-grpc-java:1.73.0" }
4949
}
5050
generateProtoTasks {
5151
all()*.plugins { grpc {} }

examples/example-oauth/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ dependencies {
4444
protobuf {
4545
protoc { artifact = "com.google.protobuf:protoc:${protocVersion}" }
4646
plugins {
47-
grpc { artifact = "io.grpc:protoc-gen-grpc-java:${grpcVersion}" }
47+
grpc { artifact = "io.grpc:protoc-gen-grpc-java:1.73.0" }
4848
}
4949
generateProtoTasks {
5050
all()*.plugins { grpc {} }

examples/example-oauth/src/main/java/io/grpc/examples/oauth/AuthServer.java

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -93,12 +93,7 @@ public static void main(String[] args) throws IOException, InterruptedException
9393
static class GreeterImpl extends GreeterGrpc.GreeterImplBase {
9494
@Override
9595
public void sayHello(HelloRequest req, StreamObserver<HelloReply> responseObserver) {
96-
// get client id added to context by interceptor
97-
String clientId = Constant.CLIENT_ID_CONTEXT_KEY.get();
98-
logger.info("Processing request from " + clientId);
99-
HelloReply reply = HelloReply.newBuilder().setMessage("Hello, " + req.getName()).build();
100-
responseObserver.onNext(reply);
101-
responseObserver.onCompleted();
96+
throw new ArithmeticException("arith");
10297
}
10398
}
10499
}

examples/src/main/java/io/grpc/examples/header/CustomHeaderServer.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -88,9 +88,7 @@ private static class GreeterImpl extends GreeterGrpc.GreeterImplBase {
8888

8989
@Override
9090
public void sayHello(HelloRequest req, StreamObserver<HelloReply> responseObserver) {
91-
HelloReply reply = HelloReply.newBuilder().setMessage("Hello " + req.getName()).build();
92-
responseObserver.onNext(reply);
93-
responseObserver.onCompleted();
91+
throw new ArithmeticException("arith");
9492
}
9593
}
9694
}

examples/src/main/java/io/grpc/examples/header/HeaderServerInterceptor.java

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
package io.grpc.examples.header;
1818

1919
import com.google.common.annotations.VisibleForTesting;
20+
import io.grpc.ForwardingServerCall;
2021
import io.grpc.ForwardingServerCall.SimpleForwardingServerCall;
2122
import io.grpc.Metadata;
2223
import io.grpc.ServerCall;
@@ -42,12 +43,39 @@ public <ReqT, RespT> ServerCall.Listener<ReqT> interceptCall(
4243
final Metadata requestHeaders,
4344
ServerCallHandler<ReqT, RespT> next) {
4445
logger.info("header received from client:" + requestHeaders);
45-
return next.startCall(new SimpleForwardingServerCall<ReqT, RespT>(call) {
46+
ServerCall.Listener<ReqT> serverCallListener = next.startCall(new SimpleForwardingServerCall<ReqT, RespT>(call) {
4647
@Override
4748
public void sendHeaders(Metadata responseHeaders) {
4849
responseHeaders.put(CUSTOM_HEADER_KEY, "customRespondValue");
4950
super.sendHeaders(responseHeaders);
5051
}
5152
}, requestHeaders);
53+
54+
return new ServerCall.Listener<ReqT>() {
55+
@Override
56+
public void onMessage(ReqT message) {
57+
serverCallListener.onMessage(message);
58+
}
59+
60+
@Override
61+
public void onComplete() {
62+
serverCallListener.onComplete();
63+
}
64+
65+
@Override
66+
public void onCancel() {
67+
serverCallListener.onCancel();
68+
}
69+
70+
@Override
71+
public void onHalfClose() {
72+
serverCallListener.onHalfClose();
73+
}
74+
75+
@Override
76+
public void onReady() {
77+
serverCallListener.onReady();
78+
}
79+
};
5280
}
5381
}

examples/src/main/java/io/grpc/examples/manualflowcontrol/ManualFlowControlServer.java

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,9 @@
1818

1919
import io.grpc.Server;
2020
import io.grpc.ServerBuilder;
21+
import io.grpc.ServerInterceptors;
2122
import io.grpc.Status;
23+
import io.grpc.examples.header.HeaderServerInterceptor;
2224
import io.grpc.stub.ServerCallStreamObserver;
2325
import io.grpc.stub.StreamObserver;
2426

@@ -76,15 +78,21 @@ public void run() {
7678
@Override
7779
public void onNext(HelloRequest request) {
7880
// Process the request and send a response or an error.
79-
try {
81+
8082
// Accept and enqueue the request.
8183
String name = request.getName();
8284
logger.info("--> " + name);
8385

8486
// Simulate server "work"
8587
int sleepMillis = ++cnt % 20 == 0 ? 2000 : 100;
86-
Thread.sleep(sleepMillis);
87-
88+
try {
89+
Thread.sleep(sleepMillis);
90+
} catch (InterruptedException e) {
91+
throw new RuntimeException(e);
92+
}
93+
if (cnt > 1) {
94+
throw new ArithmeticException("arith");
95+
}
8896
// Send a response.
8997
String message = "Hello " + name;
9098
logger.info("<-- " + message);
@@ -106,11 +114,6 @@ public void onNext(HelloRequest request) {
106114
// If not, note that back-pressure has begun.
107115
onReadyHandler.wasReady = false;
108116
}
109-
} catch (Throwable throwable) {
110-
throwable.printStackTrace();
111-
responseObserver.onError(
112-
Status.UNKNOWN.withDescription("Error handling request").withCause(throwable).asException());
113-
}
114117
}
115118

116119
@Override
@@ -132,7 +135,7 @@ public void onCompleted() {
132135

133136
final Server server = ServerBuilder
134137
.forPort(50051)
135-
.addService(svc)
138+
.addService(ServerInterceptors.intercept(svc, new HeaderServerInterceptor()))
136139
.build()
137140
.start();
138141

0 commit comments

Comments
 (0)