Make sure span is opened and closed with scope in Couchbase
This commit is contained in:
parent
2bba4c5591
commit
f3e1eb4f5d
|
@ -14,6 +14,7 @@ import com.google.auto.service.AutoService;
|
||||||
import datadog.trace.agent.tooling.Instrumenter;
|
import datadog.trace.agent.tooling.Instrumenter;
|
||||||
import datadog.trace.api.DDTags;
|
import datadog.trace.api.DDTags;
|
||||||
import datadog.trace.bootstrap.CallDepthThreadLocalMap;
|
import datadog.trace.bootstrap.CallDepthThreadLocalMap;
|
||||||
|
import io.opentracing.Scope;
|
||||||
import io.opentracing.Span;
|
import io.opentracing.Span;
|
||||||
import io.opentracing.noop.NoopSpan;
|
import io.opentracing.noop.NoopSpan;
|
||||||
import io.opentracing.util.GlobalTracer;
|
import io.opentracing.util.GlobalTracer;
|
||||||
|
@ -113,14 +114,16 @@ public class CouchbaseBucketInstrumentation extends Instrumenter.Default {
|
||||||
declaringClass.getSimpleName().replace("CouchbaseAsync", "").replace("DefaultAsync", "");
|
declaringClass.getSimpleName().replace("CouchbaseAsync", "").replace("DefaultAsync", "");
|
||||||
final String resourceName = className + "." + method.getName();
|
final String resourceName = className + "." + method.getName();
|
||||||
|
|
||||||
// just replace the no-op span.
|
final Span span =
|
||||||
spanRef.set(
|
GlobalTracer.get()
|
||||||
DECORATE.afterStart(
|
.buildSpan("couchbase.call")
|
||||||
GlobalTracer.get()
|
.withTag(DDTags.RESOURCE_NAME, resourceName)
|
||||||
.buildSpan("couchbase.call")
|
.withTag("bucket", bucket)
|
||||||
.withTag(DDTags.RESOURCE_NAME, resourceName)
|
.start();
|
||||||
.withTag("bucket", bucket)
|
try (final Scope scope = GlobalTracer.get().scopeManager().activate(span, false)) {
|
||||||
.start()));
|
// just replace the no-op span.
|
||||||
|
spanRef.set(DECORATE.afterStart(span));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -136,8 +139,9 @@ public class CouchbaseBucketInstrumentation extends Instrumenter.Default {
|
||||||
final Span span = spanRef.getAndSet(null);
|
final Span span = spanRef.getAndSet(null);
|
||||||
|
|
||||||
if (span != null) {
|
if (span != null) {
|
||||||
DECORATE.beforeFinish(span);
|
try (final Scope scope = GlobalTracer.get().scopeManager().activate(span, true)) {
|
||||||
span.finish();
|
DECORATE.beforeFinish(span);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -153,9 +157,10 @@ public class CouchbaseBucketInstrumentation extends Instrumenter.Default {
|
||||||
public void call(final Throwable throwable) {
|
public void call(final Throwable throwable) {
|
||||||
final Span span = spanRef.getAndSet(null);
|
final Span span = spanRef.getAndSet(null);
|
||||||
if (span != null) {
|
if (span != null) {
|
||||||
DECORATE.onError(span, throwable);
|
try (final Scope scope = GlobalTracer.get().scopeManager().activate(span, true)) {
|
||||||
DECORATE.beforeFinish(span);
|
DECORATE.onError(span, throwable);
|
||||||
span.finish();
|
DECORATE.beforeFinish(span);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,6 +14,7 @@ import com.google.auto.service.AutoService;
|
||||||
import datadog.trace.agent.tooling.Instrumenter;
|
import datadog.trace.agent.tooling.Instrumenter;
|
||||||
import datadog.trace.api.DDTags;
|
import datadog.trace.api.DDTags;
|
||||||
import datadog.trace.bootstrap.CallDepthThreadLocalMap;
|
import datadog.trace.bootstrap.CallDepthThreadLocalMap;
|
||||||
|
import io.opentracing.Scope;
|
||||||
import io.opentracing.Span;
|
import io.opentracing.Span;
|
||||||
import io.opentracing.noop.NoopSpan;
|
import io.opentracing.noop.NoopSpan;
|
||||||
import io.opentracing.util.GlobalTracer;
|
import io.opentracing.util.GlobalTracer;
|
||||||
|
@ -108,13 +109,15 @@ public class CouchbaseClusterInstrumentation extends Instrumenter.Default {
|
||||||
declaringClass.getSimpleName().replace("CouchbaseAsync", "").replace("DefaultAsync", "");
|
declaringClass.getSimpleName().replace("CouchbaseAsync", "").replace("DefaultAsync", "");
|
||||||
final String resourceName = className + "." + method.getName();
|
final String resourceName = className + "." + method.getName();
|
||||||
|
|
||||||
// just replace the no-op span.
|
final Span span =
|
||||||
spanRef.set(
|
GlobalTracer.get()
|
||||||
DECORATE.afterStart(
|
.buildSpan("couchbase.call")
|
||||||
GlobalTracer.get()
|
.withTag(DDTags.RESOURCE_NAME, resourceName)
|
||||||
.buildSpan("couchbase.call")
|
.start();
|
||||||
.withTag(DDTags.RESOURCE_NAME, resourceName)
|
try (final Scope scope = GlobalTracer.get().scopeManager().activate(span, false)) {
|
||||||
.start()));
|
// just replace the no-op span.
|
||||||
|
spanRef.set(DECORATE.afterStart(scope.span()));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -130,8 +133,9 @@ public class CouchbaseClusterInstrumentation extends Instrumenter.Default {
|
||||||
final Span span = spanRef.getAndSet(null);
|
final Span span = spanRef.getAndSet(null);
|
||||||
|
|
||||||
if (span != null) {
|
if (span != null) {
|
||||||
DECORATE.beforeFinish(span);
|
try (final Scope scope = GlobalTracer.get().scopeManager().activate(span, true)) {
|
||||||
span.finish();
|
DECORATE.beforeFinish(span);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -147,9 +151,10 @@ public class CouchbaseClusterInstrumentation extends Instrumenter.Default {
|
||||||
public void call(final Throwable throwable) {
|
public void call(final Throwable throwable) {
|
||||||
final Span span = spanRef.getAndSet(null);
|
final Span span = spanRef.getAndSet(null);
|
||||||
if (span != null) {
|
if (span != null) {
|
||||||
DECORATE.onError(span, throwable);
|
try (final Scope scope = GlobalTracer.get().scopeManager().activate(span, true)) {
|
||||||
DECORATE.beforeFinish(span);
|
DECORATE.onError(span, throwable);
|
||||||
span.finish();
|
DECORATE.beforeFinish(span);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue