aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorsebright <sebright@google.com>2018-08-26 21:08:37 -0700
committerGitHub <noreply@github.com>2018-08-26 21:08:37 -0700
commitb8e6dcc312c9655a1d5709c15a2e408903314cbe (patch)
tree5241a2940b4c6d896df99c0fca8a0f4fbf83d1c1
parent01f2d7503e0d33abd930e0191f92b5a4a8f0fcd3 (diff)
downloadplatform_external_opencensus-java-b8e6dcc312c9655a1d5709c15a2e408903314cbe.tar.gz
platform_external_opencensus-java-b8e6dcc312c9655a1d5709c15a2e408903314cbe.tar.bz2
platform_external_opencensus-java-b8e6dcc312c9655a1d5709c15a2e408903314cbe.zip
Access current span using gRPC context key in OpenCensusTraceLoggingEnhancer. (#1386)
Avoiding accessing the OpenCensus tracing implementation early in initialization is more robust. See the discussion in https://github.com/census-instrumentation/opencensus-java/pull/1371#discussion_r211440915 and https://github.com/census-instrumentation/opencensus-java/pull/1371#discussion_r211441000.
-rw-r--r--contrib/log_correlation/stackdriver/src/main/java/io/opencensus/contrib/logcorrelation/stackdriver/OpenCensusTraceLoggingEnhancer.java15
1 files changed, 9 insertions, 6 deletions
diff --git a/contrib/log_correlation/stackdriver/src/main/java/io/opencensus/contrib/logcorrelation/stackdriver/OpenCensusTraceLoggingEnhancer.java b/contrib/log_correlation/stackdriver/src/main/java/io/opencensus/contrib/logcorrelation/stackdriver/OpenCensusTraceLoggingEnhancer.java
index 75320fdd..dce75596 100644
--- a/contrib/log_correlation/stackdriver/src/main/java/io/opencensus/contrib/logcorrelation/stackdriver/OpenCensusTraceLoggingEnhancer.java
+++ b/contrib/log_correlation/stackdriver/src/main/java/io/opencensus/contrib/logcorrelation/stackdriver/OpenCensusTraceLoggingEnhancer.java
@@ -20,10 +20,10 @@ import com.google.cloud.ServiceOptions;
import com.google.cloud.logging.LogEntry;
import com.google.cloud.logging.LoggingEnhancer;
import io.opencensus.common.ExperimentalApi;
+import io.opencensus.trace.Span;
import io.opencensus.trace.SpanContext;
import io.opencensus.trace.TraceId;
-import io.opencensus.trace.Tracer;
-import io.opencensus.trace.Tracing;
+import io.opencensus.trace.unsafe.ContextUtils;
import java.util.logging.LogManager;
import javax.annotation.Nullable;
@@ -57,8 +57,6 @@ public final class OpenCensusTraceLoggingEnhancer implements LoggingEnhancer {
"io.opencensus.contrib.logcorrelation.stackdriver."
+ "OpenCensusTraceLoggingEnhancer.spanSelection";
- private static final Tracer tracer = Tracing.getTracer();
-
private final String projectId;
private final SpanSelection spanSelection;
@@ -184,18 +182,23 @@ public final class OpenCensusTraceLoggingEnhancer implements LoggingEnhancer {
case NO_SPANS:
return;
case SAMPLED_SPANS:
- SpanContext span = tracer.getCurrentSpan().getContext();
+ SpanContext span = getCurrentSpanContext();
if (span.getTraceOptions().isSampled()) {
addTracingData(tracePrefix, span, builder);
}
return;
case ALL_SPANS:
- addTracingData(tracePrefix, tracer.getCurrentSpan().getContext(), builder);
+ addTracingData(tracePrefix, getCurrentSpanContext(), builder);
return;
}
throw new AssertionError("Unknown spanSelection: " + spanSelection);
}
+ private static SpanContext getCurrentSpanContext() {
+ Span span = ContextUtils.CONTEXT_SPAN_KEY.get();
+ return span == null ? SpanContext.INVALID : span.getContext();
+ }
+
private static void addTracingData(
String tracePrefix, SpanContext span, LogEntry.Builder builder) {
builder.setTrace(formatTraceId(tracePrefix, span.getTraceId()));