Closes #222: Introduce a ScopeManager property
This commit is contained in:
parent
91c56dea96
commit
f78c290b40
|
@ -34,7 +34,7 @@ import lombok.extern.slf4j.Slf4j;
|
||||||
|
|
||||||
/** DDTracer makes it easy to send traces and span to DD using the OpenTracing API. */
|
/** DDTracer makes it easy to send traces and span to DD using the OpenTracing API. */
|
||||||
@Slf4j
|
@Slf4j
|
||||||
public class DDTracer extends ThreadLocalScopeManager implements io.opentracing.Tracer {
|
public class DDTracer implements io.opentracing.Tracer {
|
||||||
|
|
||||||
public static final String UNASSIGNED_DEFAULT_SERVICE_NAME = "unnamed-java-app";
|
public static final String UNASSIGNED_DEFAULT_SERVICE_NAME = "unnamed-java-app";
|
||||||
|
|
||||||
|
@ -44,6 +44,10 @@ public class DDTracer extends ThreadLocalScopeManager implements io.opentracing.
|
||||||
final Writer writer;
|
final Writer writer;
|
||||||
/** Sampler defines the sampling policy in order to reduce the number of traces for instance */
|
/** Sampler defines the sampling policy in order to reduce the number of traces for instance */
|
||||||
final Sampler sampler;
|
final Sampler sampler;
|
||||||
|
/**
|
||||||
|
* Scope manager is in charge of managing the scopes from which spans are created
|
||||||
|
*/
|
||||||
|
final ScopeManager scopeManager;
|
||||||
|
|
||||||
/** A set of tags that are added to every span */
|
/** A set of tags that are added to every span */
|
||||||
private final Map<String, Object> spanTags;
|
private final Map<String, Object> spanTags;
|
||||||
|
@ -68,7 +72,8 @@ public class DDTracer extends ThreadLocalScopeManager implements io.opentracing.
|
||||||
config.getProperty(DDTraceConfig.SERVICE_NAME),
|
config.getProperty(DDTraceConfig.SERVICE_NAME),
|
||||||
Writer.Builder.forConfig(config),
|
Writer.Builder.forConfig(config),
|
||||||
Sampler.Builder.forConfig(config),
|
Sampler.Builder.forConfig(config),
|
||||||
DDTraceConfig.parseMap(config.getProperty(DDTraceConfig.SPAN_TAGS)));
|
new ThreadLocalScopeManager(),
|
||||||
|
DDTraceConfig.parseMap(config.getProperty(DDTraceConfig.SPAN_TAGS)));
|
||||||
log.debug("Using config: {}", config);
|
log.debug("Using config: {}", config);
|
||||||
|
|
||||||
// Create decorators from resource files
|
// Create decorators from resource files
|
||||||
|
@ -80,18 +85,20 @@ public class DDTracer extends ThreadLocalScopeManager implements io.opentracing.
|
||||||
}
|
}
|
||||||
|
|
||||||
public DDTracer(final String serviceName, final Writer writer, final Sampler sampler) {
|
public DDTracer(final String serviceName, final Writer writer, final Sampler sampler) {
|
||||||
this(serviceName, writer, sampler, Collections.<String, Object>emptyMap());
|
this(serviceName, writer, sampler, new ThreadLocalScopeManager(), Collections.<String, Object>emptyMap());
|
||||||
}
|
}
|
||||||
|
|
||||||
public DDTracer(
|
public DDTracer(
|
||||||
final String serviceName,
|
final String serviceName,
|
||||||
final Writer writer,
|
final Writer writer,
|
||||||
final Sampler sampler,
|
final Sampler sampler,
|
||||||
|
final ScopeManager scopeManager,
|
||||||
final Map<String, Object> spanTags) {
|
final Map<String, Object> spanTags) {
|
||||||
this.serviceName = serviceName;
|
this.serviceName = serviceName;
|
||||||
this.writer = writer;
|
this.writer = writer;
|
||||||
this.writer.start();
|
this.writer.start();
|
||||||
this.sampler = sampler;
|
this.sampler = sampler;
|
||||||
|
this.scopeManager = scopeManager;
|
||||||
this.spanTags = spanTags;
|
this.spanTags = spanTags;
|
||||||
|
|
||||||
registry = new CodecRegistry();
|
registry = new CodecRegistry();
|
||||||
|
@ -109,7 +116,8 @@ public class DDTracer extends ThreadLocalScopeManager implements io.opentracing.
|
||||||
UNASSIGNED_DEFAULT_SERVICE_NAME,
|
UNASSIGNED_DEFAULT_SERVICE_NAME,
|
||||||
writer,
|
writer,
|
||||||
new AllSampler(),
|
new AllSampler(),
|
||||||
DDTraceConfig.parseMap(new DDTraceConfig().getProperty(DDTraceConfig.SPAN_TAGS)));
|
new ThreadLocalScopeManager(),
|
||||||
|
DDTraceConfig.parseMap(new DDTraceConfig().getProperty(DDTraceConfig.SPAN_TAGS)));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -139,18 +147,18 @@ public class DDTracer extends ThreadLocalScopeManager implements io.opentracing.
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ScopeManager scopeManager() {
|
public ScopeManager scopeManager() {
|
||||||
return this;
|
return scopeManager;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Span activeSpan() {
|
public Span activeSpan() {
|
||||||
final Scope active = active();
|
final Scope active = scopeManager.active();
|
||||||
return active == null ? null : active.span();
|
return active == null ? null : active.span();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public DDSpanBuilder buildSpan(final String operationName) {
|
public DDSpanBuilder buildSpan(final String operationName) {
|
||||||
return new DDSpanBuilder(operationName, this);
|
return new DDSpanBuilder(operationName, scopeManager);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -412,7 +420,7 @@ public class DDTracer extends ThreadLocalScopeManager implements io.opentracing.
|
||||||
SpanContext parentContext = this.parent;
|
SpanContext parentContext = this.parent;
|
||||||
if (parentContext == null && !ignoreScope) {
|
if (parentContext == null && !ignoreScope) {
|
||||||
// use the Scope as parent unless overridden or ignored.
|
// use the Scope as parent unless overridden or ignored.
|
||||||
final Scope scope = active();
|
final Scope scope = scopeManager.active();
|
||||||
if (scope != null) parentContext = scope.span().context();
|
if (scope != null) parentContext = scope.span().context();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue