gcp-observability: add grpc-census as a dependency and update opencensus version (#9140)

This commit is contained in:
DNVindhya 2022-05-03 20:52:34 -07:00 committed by GitHub
parent de7db565a3
commit 15ecc0714e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 32 additions and 14 deletions

View File

@ -60,7 +60,7 @@ subprojects {
googleauthVersion = '1.4.0' googleauthVersion = '1.4.0'
protobufVersion = '3.19.2' protobufVersion = '3.19.2'
protocVersion = protobufVersion protocVersion = protobufVersion
opencensusVersion = '0.28.0' opencensusVersion = '0.31.0'
autovalueVersion = '1.9' autovalueVersion = '1.9'
configureProtoCompilation = { configureProtoCompilation = {

View File

@ -41,7 +41,6 @@ import io.opencensus.trace.SpanContext;
import io.opencensus.trace.Status; import io.opencensus.trace.Status;
import io.opencensus.trace.Tracer; import io.opencensus.trace.Tracer;
import io.opencensus.trace.propagation.BinaryFormat; import io.opencensus.trace.propagation.BinaryFormat;
import io.opencensus.trace.unsafe.ContextUtils;
import java.util.concurrent.atomic.AtomicIntegerFieldUpdater; import java.util.concurrent.atomic.AtomicIntegerFieldUpdater;
import java.util.logging.Level; import java.util.logging.Level;
import java.util.logging.Logger; import java.util.logging.Logger;
@ -366,12 +365,18 @@ final class CensusTracingModule {
span.end(createEndSpanOptions(status, isSampledToLocalTracing)); span.end(createEndSpanOptions(status, isSampledToLocalTracing));
} }
/*
TODO(dnvindhya): Replace deprecated ContextUtils usage with ContextHandleUtils to interact
with io.grpc.Context as described in {@link io.opencensus.trace.unsafeContextUtils} to remove
SuppressWarnings annotation.
*/
@SuppressWarnings("deprecation")
@Override @Override
public Context filterContext(Context context) { public Context filterContext(Context context) {
// Access directly the unsafe trace API to create the new Context. This is a safe usage // Access directly the unsafe trace API to create the new Context. This is a safe usage
// because gRPC always creates a new Context for each of the server calls and does not // because gRPC always creates a new Context for each of the server calls and does not
// inherit from the parent Context. // inherit from the parent Context.
return ContextUtils.withValue(context, span); return io.opencensus.trace.unsafe.ContextUtils.withValue(context, span);
} }
@Override @Override
@ -404,6 +409,8 @@ final class CensusTracingModule {
@VisibleForTesting @VisibleForTesting
final class TracingClientInterceptor implements ClientInterceptor { final class TracingClientInterceptor implements ClientInterceptor {
@SuppressWarnings("deprecation")
@Override @Override
public <ReqT, RespT> ClientCall<ReqT, RespT> interceptCall( public <ReqT, RespT> ClientCall<ReqT, RespT> interceptCall(
MethodDescriptor<ReqT, RespT> method, CallOptions callOptions, Channel next) { MethodDescriptor<ReqT, RespT> method, CallOptions callOptions, Channel next) {
@ -412,7 +419,8 @@ final class CensusTracingModule {
// as Tracer.getCurrentSpan() except when no value available when the return value is null // as Tracer.getCurrentSpan() except when no value available when the return value is null
// for the direct access and BlankSpan when Tracer API is used. // for the direct access and BlankSpan when Tracer API is used.
final CallAttemptsTracerFactory tracerFactory = final CallAttemptsTracerFactory tracerFactory =
newClientCallTracer(ContextUtils.getValue(Context.current()), method); newClientCallTracer(
io.opencensus.trace.unsafe.ContextUtils.getValue(Context.current()), method);
ClientCall<ReqT, RespT> call = ClientCall<ReqT, RespT> call =
next.newCall( next.newCall(
method, method,

View File

@ -95,7 +95,6 @@ import io.opencensus.trace.SpanContext;
import io.opencensus.trace.Tracer; import io.opencensus.trace.Tracer;
import io.opencensus.trace.propagation.BinaryFormat; import io.opencensus.trace.propagation.BinaryFormat;
import io.opencensus.trace.propagation.SpanContextParseException; import io.opencensus.trace.propagation.SpanContextParseException;
import io.opencensus.trace.unsafe.ContextUtils;
import java.io.InputStream; import java.io.InputStream;
import java.util.HashSet; import java.util.HashSet;
import java.util.List; import java.util.List;
@ -247,6 +246,7 @@ public class CensusModulesTest {
// Test that Census ClientInterceptors uses the TagContext and Span out of the current Context // Test that Census ClientInterceptors uses the TagContext and Span out of the current Context
// to create the ClientCallTracer, and that it intercepts ClientCall.Listener.onClose() to call // to create the ClientCallTracer, and that it intercepts ClientCall.Listener.onClose() to call
// ClientCallTracer.callEnded(). // ClientCallTracer.callEnded().
@SuppressWarnings("deprecation")
private void testClientInterceptors(boolean nonDefaultContext) { private void testClientInterceptors(boolean nonDefaultContext) {
grpcServerRule.getServiceRegistry().addService( grpcServerRule.getServiceRegistry().addService(
ServerServiceDefinition.builder("package1.service2").addMethod( ServerServiceDefinition.builder("package1.service2").addMethod(
@ -284,7 +284,7 @@ public class CensusModulesTest {
.emptyBuilder() .emptyBuilder()
.putLocal(StatsTestUtils.EXTRA_TAG, TagValue.create("extra value")) .putLocal(StatsTestUtils.EXTRA_TAG, TagValue.create("extra value"))
.build()); .build());
ctx = ContextUtils.withValue(ctx, fakeClientParentSpan); ctx = io.opencensus.trace.unsafe.ContextUtils.withValue(ctx, fakeClientParentSpan);
Context origCtx = ctx.attach(); Context origCtx = ctx.attach();
try { try {
call = interceptedChannel.newCall(method, CALL_OPTIONS); call = interceptedChannel.newCall(method, CALL_OPTIONS);
@ -295,7 +295,8 @@ public class CensusModulesTest {
assertEquals( assertEquals(
io.opencensus.tags.unsafe.ContextUtils.getValue(Context.ROOT), io.opencensus.tags.unsafe.ContextUtils.getValue(Context.ROOT),
io.opencensus.tags.unsafe.ContextUtils.getValue(Context.current())); io.opencensus.tags.unsafe.ContextUtils.getValue(Context.current()));
assertEquals(ContextUtils.getValue(Context.current()), BlankSpan.INSTANCE); assertEquals(io.opencensus.trace.unsafe.ContextUtils.getValue(Context.current()),
BlankSpan.INSTANCE);
call = interceptedChannel.newCall(method, CALL_OPTIONS); call = interceptedChannel.newCall(method, CALL_OPTIONS);
} }
@ -1035,6 +1036,7 @@ public class CensusModulesTest {
assertSame(tagger.empty(), headers.get(censusStats.statsHeader)); assertSame(tagger.empty(), headers.get(censusStats.statsHeader));
} }
@SuppressWarnings("deprecation")
@Test @Test
public void traceHeadersPropagateSpanContext() throws Exception { public void traceHeadersPropagateSpanContext() throws Exception {
CallAttemptsTracerFactory callTracer = CallAttemptsTracerFactory callTracer =
@ -1062,7 +1064,7 @@ public class CensusModulesTest {
verify(spyServerSpanBuilder).setRecordEvents(eq(true)); verify(spyServerSpanBuilder).setRecordEvents(eq(true));
Context filteredContext = serverTracer.filterContext(Context.ROOT); Context filteredContext = serverTracer.filterContext(Context.ROOT);
assertSame(spyServerSpan, ContextUtils.getValue(filteredContext)); assertSame(spyServerSpan, io.opencensus.trace.unsafe.ContextUtils.getValue(filteredContext));
} }
@Test @Test
@ -1279,6 +1281,7 @@ public class CensusModulesTest {
} }
} }
@SuppressWarnings("deprecation")
@Test @Test
public void serverBasicTracingNoHeaders() { public void serverBasicTracingNoHeaders() {
ServerStreamTracer.Factory tracerFactory = censusTracing.getServerTracerFactory(); ServerStreamTracer.Factory tracerFactory = censusTracing.getServerTracerFactory();
@ -1290,7 +1293,7 @@ public class CensusModulesTest {
verify(spyServerSpanBuilder).setRecordEvents(eq(true)); verify(spyServerSpanBuilder).setRecordEvents(eq(true));
Context filteredContext = serverStreamTracer.filterContext(Context.ROOT); Context filteredContext = serverStreamTracer.filterContext(Context.ROOT);
assertSame(spyServerSpan, ContextUtils.getValue(filteredContext)); assertSame(spyServerSpan, io.opencensus.trace.unsafe.ContextUtils.getValue(filteredContext));
serverStreamTracer.serverCallStarted( serverStreamTracer.serverCallStarted(
new CallInfo<>(method, Attributes.EMPTY, null)); new CallInfo<>(method, Attributes.EMPTY, null));

View File

@ -21,6 +21,7 @@ description = "gRPC: Google Cloud Platform Observability"
dependencies { dependencies {
def cloudLoggingVersion = '3.6.1' def cloudLoggingVersion = '3.6.1'
def opencensusExporterVersion = '0.31.0'
annotationProcessor libraries.autovalue annotationProcessor libraries.autovalue
api project(':grpc-api') api project(':grpc-api')
@ -28,9 +29,11 @@ dependencies {
implementation project(':grpc-protobuf'), implementation project(':grpc-protobuf'),
project(':grpc-stub'), project(':grpc-stub'),
project(':grpc-alts'), project(':grpc-alts'),
project(':grpc-census'),
libraries.google_auth_oauth2_http, libraries.google_auth_oauth2_http,
libraries.autovalue_annotation, libraries.autovalue_annotation,
libraries.perfmark, libraries.perfmark,
libraries.opencensus_contrib_grpc_metrics,
('com.google.guava:guava:31.0.1-jre'), ('com.google.guava:guava:31.0.1-jre'),
('com.google.errorprone:error_prone_annotations:2.11.0'), ('com.google.errorprone:error_prone_annotations:2.11.0'),
('com.google.auth:google-auth-library-credentials:1.4.0'), ('com.google.auth:google-auth-library-credentials:1.4.0'),
@ -39,7 +42,11 @@ dependencies {
('com.google.http-client:google-http-client:1.41.0'), ('com.google.http-client:google-http-client:1.41.0'),
('com.google.http-client:google-http-client-gson:1.41.0'), ('com.google.http-client:google-http-client-gson:1.41.0'),
('com.google.api.grpc:proto-google-common-protos:2.7.1'), ('com.google.api.grpc:proto-google-common-protos:2.7.1'),
("com.google.cloud:google-cloud-logging:${cloudLoggingVersion}") ("com.google.cloud:google-cloud-logging:${cloudLoggingVersion}"),
("io.opencensus:opencensus-exporter-stats-stackdriver:${opencensusExporterVersion}"),
("io.opencensus:opencensus-exporter-trace-stackdriver:${opencensusExporterVersion}")
runtimeOnly libraries.opencensus_impl
testImplementation project(':grpc-testing'), testImplementation project(':grpc-testing'),
project(':grpc-testing-proto'), project(':grpc-testing-proto'),

View File

@ -100,7 +100,6 @@ import io.opencensus.tags.TagValue;
import io.opencensus.trace.Span; import io.opencensus.trace.Span;
import io.opencensus.trace.SpanContext; import io.opencensus.trace.SpanContext;
import io.opencensus.trace.Tracing; import io.opencensus.trace.Tracing;
import io.opencensus.trace.unsafe.ContextUtils;
import java.io.ByteArrayInputStream; import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream; import java.io.ByteArrayOutputStream;
import java.io.IOException; import java.io.IOException;
@ -1547,6 +1546,7 @@ public abstract class AbstractInteropTest {
Collections.singleton(streamingRequest), Collections.singleton(goldenStreamingResponse)); Collections.singleton(streamingRequest), Collections.singleton(goldenStreamingResponse));
} }
@SuppressWarnings("deprecation")
@Test(timeout = 10000) @Test(timeout = 10000)
public void censusContextsPropagated() { public void censusContextsPropagated() {
Assume.assumeTrue("Skip the test because server is not in the same process.", server != null); Assume.assumeTrue("Skip the test because server is not in the same process.", server != null);
@ -1561,7 +1561,7 @@ public abstract class AbstractInteropTest {
.emptyBuilder() .emptyBuilder()
.putLocal(StatsTestUtils.EXTRA_TAG, TagValue.create("extra value")) .putLocal(StatsTestUtils.EXTRA_TAG, TagValue.create("extra value"))
.build()); .build());
ctx = ContextUtils.withValue(ctx, clientParentSpan); ctx = io.opencensus.trace.unsafe.ContextUtils.withValue(ctx, clientParentSpan);
Context origCtx = ctx.attach(); Context origCtx = ctx.attach();
try { try {
blockingStub.unaryCall(SimpleRequest.getDefaultInstance()); blockingStub.unaryCall(SimpleRequest.getDefaultInstance());
@ -1581,7 +1581,7 @@ public abstract class AbstractInteropTest {
} }
assertTrue("tag not found", tagFound); assertTrue("tag not found", tagFound);
Span span = ContextUtils.getValue(serverCtx); Span span = io.opencensus.trace.unsafe.ContextUtils.getValue(serverCtx);
assertNotNull(span); assertNotNull(span);
SpanContext spanContext = span.getContext(); SpanContext spanContext = span.getContext();
assertEquals(clientParentSpan.getContext().getTraceId(), spanContext.getTraceId()); assertEquals(clientParentSpan.getContext().getTraceId(), spanContext.getTraceId());