Skip to content

Commit 9a38dea

Browse files
committed
Revert "core: Update gRPC to use span kind and raw full method. (#5328)"
This reverts commit d473799. This caused test failures internally, where gRPC failed with "IllegalArgumentException: Invalid trace name". Not only was this failure unexpected, it was also weird that it failed with an IllegalArgumentException instead of the normal StatusRuntimeException.
1 parent bb39413 commit 9a38dea

File tree

2 files changed

+38
-22
lines changed

2 files changed

+38
-22
lines changed

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

Lines changed: 21 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,6 @@
3737
import io.opencensus.trace.MessageEvent;
3838
import io.opencensus.trace.MessageEvent.Type;
3939
import io.opencensus.trace.Span;
40-
import io.opencensus.trace.Span.Kind;
4140
import io.opencensus.trace.SpanContext;
4241
import io.opencensus.trace.Status;
4342
import io.opencensus.trace.Tracer;
@@ -235,9 +234,10 @@ final class ClientCallTracer extends ClientStreamTracer.Factory {
235234
this.isSampledToLocalTracing = method.isSampledToLocalTracing();
236235
this.span =
237236
censusTracer
238-
.spanBuilderWithExplicitParent(method.getFullMethodName(), parentSpan)
237+
.spanBuilderWithExplicitParent(
238+
generateTraceSpanName(false, method.getFullMethodName()),
239+
parentSpan)
239240
.setRecordEvents(true)
240-
.setSpanKind(Kind.CLIENT)
241241
.startSpan();
242242
}
243243

@@ -303,9 +303,10 @@ private final class ServerTracer extends ServerStreamTracer {
303303
checkNotNull(fullMethodName, "fullMethodName");
304304
this.span =
305305
censusTracer
306-
.spanBuilderWithRemoteParent(fullMethodName, remoteSpan)
306+
.spanBuilderWithRemoteParent(
307+
generateTraceSpanName(true, fullMethodName),
308+
remoteSpan)
307309
.setRecordEvents(true)
308-
.setSpanKind(Kind.SERVER)
309310
.startSpan();
310311
}
311312

@@ -401,4 +402,19 @@ public void onClose(io.grpc.Status status, Metadata trailers) {
401402
};
402403
}
403404
}
405+
406+
/**
407+
* Convert a full method name to a tracing span name.
408+
*
409+
* @param isServer {@code false} if the span is on the client-side, {@code true} if on the
410+
* server-side
411+
* @param fullMethodName the method name as returned by
412+
* {@link MethodDescriptor#getFullMethodName}.
413+
*/
414+
@VisibleForTesting
415+
static String generateTraceSpanName(boolean isServer, String fullMethodName) {
416+
String prefix = isServer ? "Recv" : "Sent";
417+
return prefix + "." + fullMethodName.replace('/', '.');
418+
}
419+
404420
}

core/src/test/java/io/grpc/internal/CensusModulesTest.java

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,6 @@
7272
import io.opencensus.trace.MessageEvent;
7373
import io.opencensus.trace.MessageEvent.Type;
7474
import io.opencensus.trace.Span;
75-
import io.opencensus.trace.Span.Kind;
7675
import io.opencensus.trace.SpanBuilder;
7776
import io.opencensus.trace.SpanContext;
7877
import io.opencensus.trace.Tracer;
@@ -295,14 +294,12 @@ public <ReqT, RespT> ClientCall<ReqT, RespT> interceptCall(
295294

296295
if (nonDefaultContext) {
297296
verify(tracer).spanBuilderWithExplicitParent(
298-
eq("package1.service2/method3"), same(fakeClientParentSpan));
297+
eq("Sent.package1.service2.method3"), same(fakeClientParentSpan));
299298
verify(spyClientSpanBuilder).setRecordEvents(eq(true));
300-
verify(spyClientSpanBuilder).setSpanKind(eq(Kind.CLIENT));
301299
} else {
302300
verify(tracer).spanBuilderWithExplicitParent(
303-
eq("package1.service2/method3"), isNull(Span.class));
301+
eq("Sent.package1.service2.method3"), isNull(Span.class));
304302
verify(spyClientSpanBuilder).setRecordEvents(eq(true));
305-
verify(spyClientSpanBuilder).setSpanKind(eq(Kind.CLIENT));
306303
}
307304
verify(spyClientSpan, never()).end(any(EndSpanOptions.class));
308305

@@ -500,7 +497,7 @@ public void clientBasicTracingDefaultSpan() {
500497
ClientStreamTracer clientStreamTracer =
501498
callTracer.newClientStreamTracer(CallOptions.DEFAULT, headers);
502499
verify(tracer).spanBuilderWithExplicitParent(
503-
eq("package1.service2/method3"), isNull(Span.class));
500+
eq("Sent.package1.service2.method3"), isNull(Span.class));
504501
verify(spyClientSpan, never()).end(any(EndSpanOptions.class));
505502

506503
clientStreamTracer.outboundMessage(0);
@@ -607,9 +604,8 @@ public void clientStreamNeverCreatedStillRecordTracing() {
607604
CensusTracingModule.ClientCallTracer callTracer =
608605
censusTracing.newClientCallTracer(fakeClientParentSpan, method);
609606
verify(tracer).spanBuilderWithExplicitParent(
610-
eq("package1.service2/method3"), same(fakeClientParentSpan));
607+
eq("Sent.package1.service2.method3"), same(fakeClientParentSpan));
611608
verify(spyClientSpanBuilder).setRecordEvents(eq(true));
612-
verify(spyClientSpanBuilder).setSpanKind(eq(Kind.CLIENT));
613609

614610
callTracer.callEnded(Status.DEADLINE_EXCEEDED.withDescription("3 seconds"));
615611
verify(spyClientSpan).end(
@@ -784,9 +780,8 @@ public void traceHeadersPropagateSpanContext() throws Exception {
784780
verify(mockTracingPropagationHandler).toByteArray(same(fakeClientSpanContext));
785781
verifyNoMoreInteractions(mockTracingPropagationHandler);
786782
verify(tracer).spanBuilderWithExplicitParent(
787-
eq("package1.service2/method3"), same(fakeClientParentSpan));
783+
eq("Sent.package1.service2.method3"), same(fakeClientParentSpan));
788784
verify(spyClientSpanBuilder).setRecordEvents(eq(true));
789-
verify(spyClientSpanBuilder).setSpanKind(eq(Kind.CLIENT));
790785
verifyNoMoreInteractions(tracer);
791786
assertTrue(headers.containsKey(censusTracing.tracingHeader));
792787

@@ -795,9 +790,8 @@ public void traceHeadersPropagateSpanContext() throws Exception {
795790
method.getFullMethodName(), headers);
796791
verify(mockTracingPropagationHandler).fromByteArray(same(binarySpanContext));
797792
verify(tracer).spanBuilderWithRemoteParent(
798-
eq("package1.service2/method3"), same(spyClientSpan.getContext()));
793+
eq("Recv.package1.service2.method3"), same(spyClientSpan.getContext()));
799794
verify(spyServerSpanBuilder).setRecordEvents(eq(true));
800-
verify(spyServerSpanBuilder).setSpanKind(eq(Kind.SERVER));
801795

802796
Context filteredContext = serverTracer.filterContext(Context.ROOT);
803797
assertSame(spyServerSpan, ContextUtils.CONTEXT_SPAN_KEY.get(filteredContext));
@@ -867,10 +861,8 @@ public void traceHeaderMalformed() throws Exception {
867861
censusTracing.getServerTracerFactory().newServerStreamTracer(
868862
method.getFullMethodName(), headers);
869863
verify(tracer).spanBuilderWithRemoteParent(
870-
eq("package1.service2/method3"), isNull(SpanContext.class));
864+
eq("Recv.package1.service2.method3"), isNull(SpanContext.class));
871865
verify(spyServerSpanBuilder).setRecordEvents(eq(true));
872-
verify(spyServerSpanBuilder).setSpanKind(eq(Kind.SERVER));
873-
874866
}
875867

876868
@Test
@@ -1021,9 +1013,8 @@ public void serverBasicTracingNoHeaders() {
10211013
tracerFactory.newServerStreamTracer(method.getFullMethodName(), new Metadata());
10221014
verifyZeroInteractions(mockTracingPropagationHandler);
10231015
verify(tracer).spanBuilderWithRemoteParent(
1024-
eq("package1.service2/method3"), isNull(SpanContext.class));
1016+
eq("Recv.package1.service2.method3"), isNull(SpanContext.class));
10251017
verify(spyServerSpanBuilder).setRecordEvents(eq(true));
1026-
verify(spyServerSpanBuilder).setSpanKind(eq(Kind.SERVER));
10271018

10281019
Context filteredContext = serverStreamTracer.filterContext(Context.ROOT);
10291020
assertSame(spyServerSpan, ContextUtils.CONTEXT_SPAN_KEY.get(filteredContext));
@@ -1119,6 +1110,15 @@ public void convertToTracingStatus() {
11191110
}
11201111
}
11211112

1113+
1114+
@Test
1115+
public void generateTraceSpanName() {
1116+
assertEquals(
1117+
"Sent.io.grpc.Foo", CensusTracingModule.generateTraceSpanName(false, "io.grpc/Foo"));
1118+
assertEquals(
1119+
"Recv.io.grpc.Bar", CensusTracingModule.generateTraceSpanName(true, "io.grpc/Bar"));
1120+
}
1121+
11221122
private static void assertNoServerContent(StatsTestUtils.MetricsRecord record) {
11231123
assertNull(record.getMetric(DeprecatedCensusConstants.RPC_SERVER_ERROR_COUNT));
11241124
assertNull(record.getMetric(DeprecatedCensusConstants.RPC_SERVER_REQUEST_COUNT));

0 commit comments

Comments
 (0)