Skip to content

Commit 1813f1a

Browse files
committed
CloseWithHeadersMarker class
1 parent 3c0f66c commit 1813f1a

File tree

4 files changed

+18
-12
lines changed

4 files changed

+18
-12
lines changed
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package io.grpc.internal;
2+
3+
import io.grpc.Status;
4+
5+
/**
6+
* Marker to be used in {@link Status#withCause(Throwable)} to signal that stream should be closed
7+
* by sending headers.
8+
*/
9+
public class CloseWithHeadersMarker extends RuntimeException {
10+
11+
@Override
12+
public synchronized Throwable fillInStackTrace() {
13+
return this;
14+
}
15+
}

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

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -973,16 +973,6 @@ public static boolean getFlag(String envVarName, boolean enableByDefault) {
973973
}
974974

975975

976-
/**
977-
* Marker to be used in {@link Status#withCause(Throwable)} to signal that stream should be closed
978-
* by sending headers.
979-
*/
980-
public static final Throwable CLOSE_WITH_HEADERS = new Throwable("CLOSE_WITH_HEADERS") {
981-
@Override
982-
public synchronized Throwable fillInStackTrace() {
983-
return this;
984-
}
985-
};
986976

987977
private GrpcUtil() {}
988978
}

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -338,7 +338,7 @@ private void messagesAvailableInternal(final MessageProducer producer) {
338338
GrpcUtil.closeQuietly(producer);
339339
call.cancelled = true;
340340
call.handleInternalError(InternalStatus.asRuntimeExceptionWithoutStacktrace(
341-
e.getStatus().withCause(GrpcUtil.CLOSE_WITH_HEADERS), null));
341+
e.getStatus().withCause(new CloseWithHeadersMarker()), null));
342342
return;
343343
}
344344
message.close();

netty/src/main/java/io/grpc/netty/NettyServerStream.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
import io.grpc.Metadata;
2424
import io.grpc.Status;
2525
import io.grpc.internal.AbstractServerStream;
26+
import io.grpc.internal.CloseWithHeadersMarker;
2627
import io.grpc.internal.GrpcUtil;
2728
import io.grpc.internal.StatsTraceContext;
2829
import io.grpc.internal.TransportTracer;
@@ -132,7 +133,7 @@ public void writeTrailers(Metadata trailers, boolean headersSent, Status status)
132133
public void cancel(Status status) {
133134
try (TaskCloseable ignore = PerfMark.traceTask("NettyServerStream$Sink.cancel")) {
134135
CancelServerStreamCommand cmd =
135-
status.getCause() == GrpcUtil.CLOSE_WITH_HEADERS
136+
status.getCause() instanceof CloseWithHeadersMarker
136137
? CancelServerStreamCommand.withReason(transportState(), status)
137138
: CancelServerStreamCommand.withReset(transportState(), status);
138139
writeQueue.enqueue(cmd, true);

0 commit comments

Comments
 (0)