Changes required for OT 0.32

This seems backwards compatable with 0.31 since all changes are additional, so this should be safe.
This commit is contained in:
Tyler Benson 2019-01-02 16:25:32 -08:00
parent c8f3a26312
commit 557d45a9fe
14 changed files with 91 additions and 24 deletions

View File

@ -42,7 +42,7 @@ public class TracingServerInterceptor implements ServerInterceptor {
}
}
final SpanContext spanContext =
tracer.extract(Format.Builtin.TEXT_MAP, new TextMapExtractAdapter(headerMap));
tracer.extract(Format.Builtin.TEXT_MAP_EXTRACT, new TextMapExtractAdapter(headerMap));
final Tracer.SpanBuilder spanBuilder =
tracer

View File

@ -4,6 +4,7 @@ import com.google.common.collect.MapMaker
import com.google.common.reflect.ClassPath
import datadog.trace.agent.test.IntegrationTestUtils
import io.opentracing.util.GlobalTracer
import spock.lang.Ignore
import spock.lang.Specification
import java.lang.reflect.Field
@ -33,6 +34,7 @@ class ShadowPackageRenamingTest extends Specification {
agentSource.getFile() != userGuava.getFile()
}
@Ignore("OT 0.32 removed this field. Need to find another option.")
def "java getLogger rewritten to safe logger"() {
setup:
Field logField = GlobalTracer.getDeclaredField("LOGGER")

View File

@ -93,7 +93,7 @@ OpenTracing defines a [standard set of tags](https://github.com/opentracing/spec
ActiveSpan valuableSpan = tracer.
buildSpan("componentTracking")
.withTag("custom-meta", "some-useful-value")
.withTag(Tags.COMPONENT, "my-component-mysql")
.withTag(Tags.COMPONENT.getKey(), "my-component-mysql")
.startActive(true);

View File

@ -13,6 +13,7 @@ import datadog.trace.api.interceptor.MutableSpan;
import datadog.trace.api.sampling.PrioritySampling;
import datadog.trace.common.util.Clock;
import io.opentracing.Span;
import io.opentracing.tag.Tag;
import java.io.IOException;
import java.io.PrintWriter;
import java.io.StringWriter;
@ -188,6 +189,12 @@ public class DDSpan implements Span, MutableSpan {
return this;
}
@Override
public <T> Span setTag(final Tag<T> tag, final T value) {
context().setTag(tag.getKey(), value);
return this;
}
/* (non-Javadoc)
* @see io.opentracing.BaseSpan#context()
*/

View File

@ -132,6 +132,11 @@ public class DDSpanContext implements io.opentracing.SpanContext {
return traceId;
}
@Override
public String toTraceId() {
return traceId;
}
public String getParentId() {
return parentId;
}
@ -140,6 +145,11 @@ public class DDSpanContext implements io.opentracing.SpanContext {
return spanId;
}
@Override
public String toSpanId() {
return spanId;
}
public String getServiceName() {
return serviceName;
}

View File

@ -23,7 +23,9 @@ import io.opentracing.ScopeManager;
import io.opentracing.Span;
import io.opentracing.SpanContext;
import io.opentracing.propagation.Format;
import io.opentracing.propagation.TextMap;
import io.opentracing.propagation.TextMapExtract;
import io.opentracing.propagation.TextMapInject;
import io.opentracing.tag.Tag;
import java.io.Closeable;
import java.lang.ref.WeakReference;
import java.util.ArrayList;
@ -328,6 +330,11 @@ public class DDTracer implements io.opentracing.Tracer, Closeable, datadog.trace
return active == null ? null : active.span();
}
@Override
public Scope activateSpan(final Span span) {
return scopeManager.activate(span);
}
@Override
public DDSpanBuilder buildSpan(final String operationName) {
return new DDSpanBuilder(operationName, scopeManager);
@ -335,8 +342,8 @@ public class DDTracer implements io.opentracing.Tracer, Closeable, datadog.trace
@Override
public <T> void inject(final SpanContext spanContext, final Format<T> format, final T carrier) {
if (carrier instanceof TextMap) {
injector.inject((DDSpanContext) spanContext, (TextMap) carrier);
if (carrier instanceof TextMapInject) {
injector.inject((DDSpanContext) spanContext, (TextMapInject) carrier);
} else {
log.debug("Unsupported format for propagation - {}", format.getClass().getName());
}
@ -344,8 +351,8 @@ public class DDTracer implements io.opentracing.Tracer, Closeable, datadog.trace
@Override
public <T> SpanContext extract(final Format<T> format, final T carrier) {
if (carrier instanceof TextMap) {
return extractor.extract((TextMap) carrier);
if (carrier instanceof TextMapExtract) {
return extractor.extract((TextMapExtract) carrier);
} else {
log.debug("Unsupported format for propagation - {}", format.getClass().getName());
return null;
@ -519,6 +526,11 @@ public class DDTracer implements io.opentracing.Tracer, Closeable, datadog.trace
return withTag(tag, (Object) bool);
}
@Override
public <T> SpanBuilder withTag(final Tag<T> tag, final T value) {
return withTag(tag.getKey(), value);
}
@Override
public DDSpanBuilder withStartTimestamp(final long timestampMicroseconds) {
timestampMicro = timestampMicroseconds;

View File

@ -6,7 +6,8 @@ import static datadog.opentracing.propagation.HttpCodec.validateUInt64BitsID;
import datadog.opentracing.DDSpanContext;
import datadog.trace.api.sampling.PrioritySampling;
import io.opentracing.SpanContext;
import io.opentracing.propagation.TextMap;
import io.opentracing.propagation.TextMapExtract;
import io.opentracing.propagation.TextMapInject;
import java.math.BigInteger;
import java.util.Collections;
import java.util.HashMap;
@ -37,7 +38,7 @@ class B3HttpCodec {
public static class Injector implements HttpCodec.Injector {
@Override
public void inject(final DDSpanContext context, final TextMap carrier) {
public void inject(final DDSpanContext context, final TextMapInject carrier) {
try {
// TODO: should we better store ids as BigInteger in context to avoid parsing it twice.
final BigInteger traceId = new BigInteger(context.getTraceId());
@ -74,7 +75,7 @@ class B3HttpCodec {
}
@Override
public SpanContext extract(final TextMap carrier) {
public SpanContext extract(final TextMapExtract carrier) {
try {
Map<String, String> tags = Collections.emptyMap();
String traceId = ZERO;

View File

@ -6,7 +6,8 @@ import static datadog.opentracing.propagation.HttpCodec.validateUInt64BitsID;
import datadog.opentracing.DDSpanContext;
import datadog.trace.api.sampling.PrioritySampling;
import io.opentracing.SpanContext;
import io.opentracing.propagation.TextMap;
import io.opentracing.propagation.TextMapExtract;
import io.opentracing.propagation.TextMapInject;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
@ -29,7 +30,7 @@ class DatadogHttpCodec {
public static class Injector implements HttpCodec.Injector {
@Override
public void inject(final DDSpanContext context, final TextMap carrier) {
public void inject(final DDSpanContext context, final TextMapInject carrier) {
carrier.put(TRACE_ID_KEY, context.getTraceId());
carrier.put(SPAN_ID_KEY, context.getSpanId());
if (context.lockSamplingPriority()) {
@ -58,7 +59,7 @@ class DatadogHttpCodec {
}
@Override
public SpanContext extract(final TextMap carrier) {
public SpanContext extract(final TextMapExtract carrier) {
try {
Map<String, String> baggage = Collections.emptyMap();
Map<String, String> tags = Collections.emptyMap();

View File

@ -6,7 +6,8 @@ import static datadog.opentracing.propagation.HttpCodec.validateUInt64BitsID;
import datadog.opentracing.DDSpanContext;
import datadog.trace.api.sampling.PrioritySampling;
import io.opentracing.SpanContext;
import io.opentracing.propagation.TextMap;
import io.opentracing.propagation.TextMapExtract;
import io.opentracing.propagation.TextMapInject;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
@ -32,7 +33,7 @@ public class HaystackHttpCodec {
public static class Injector implements HttpCodec.Injector {
@Override
public void inject(final DDSpanContext context, final TextMap carrier) {
public void inject(final DDSpanContext context, final TextMapInject carrier) {
carrier.put(TRACE_ID_KEY, context.getTraceId());
carrier.put(SPAN_ID_KEY, context.getSpanId());
carrier.put(PARENT_ID_KEY, context.getParentId());
@ -56,14 +57,14 @@ public class HaystackHttpCodec {
}
@Override
public SpanContext extract(final TextMap carrier) {
public SpanContext extract(final TextMapExtract carrier) {
try {
Map<String, String> baggage = Collections.emptyMap();
Map<String, String> tags = Collections.emptyMap();
String traceId = ZERO;
String spanId = ZERO;
int samplingPriority = PrioritySampling.SAMPLER_KEEP;
String origin = null; // Always null
final int samplingPriority = PrioritySampling.SAMPLER_KEEP;
final String origin = null; // Always null
for (final Map.Entry<String, String> entry : carrier) {
final String key = entry.getKey().toLowerCase();

View File

@ -3,7 +3,8 @@ package datadog.opentracing.propagation;
import datadog.opentracing.DDSpanContext;
import datadog.trace.api.Config;
import io.opentracing.SpanContext;
import io.opentracing.propagation.TextMap;
import io.opentracing.propagation.TextMapExtract;
import io.opentracing.propagation.TextMapInject;
import java.io.UnsupportedEncodingException;
import java.math.BigInteger;
import java.net.URLDecoder;
@ -22,12 +23,12 @@ public class HttpCodec {
public interface Injector {
void inject(final DDSpanContext context, final TextMap carrier);
void inject(final DDSpanContext context, final TextMapInject carrier);
}
public interface Extractor {
SpanContext extract(final TextMap carrier);
SpanContext extract(final TextMapExtract carrier);
}
public static Injector createInjector(final Config config) {
@ -80,7 +81,7 @@ public class HttpCodec {
}
@Override
public void inject(final DDSpanContext context, final TextMap carrier) {
public void inject(final DDSpanContext context, final TextMapInject carrier) {
for (final Injector injector : injectors) {
injector.inject(context, carrier);
}
@ -96,7 +97,7 @@ public class HttpCodec {
}
@Override
public SpanContext extract(final TextMap carrier) {
public SpanContext extract(final TextMapExtract carrier) {
SpanContext context = null;
for (final Extractor extractor : extractors) {
context = extractor.extract(carrier);

View File

@ -25,6 +25,16 @@ public class TagContext implements SpanContext {
return tags;
}
@Override
public String toTraceId() {
return "";
}
@Override
public String toSpanId() {
return "";
}
@Override
public Iterable<Map.Entry<String, String>> baggageItems() {
return Collections.emptyList();

View File

@ -29,6 +29,11 @@ public class ContextualScopeManager implements ScopeManager {
}
}
@Override
public Scope activate(final Span span) {
return activate(span, false);
}
@Override
public Scope active() {
for (final ScopeContext csm : scopeContexts) {
@ -39,6 +44,12 @@ public class ContextualScopeManager implements ScopeManager {
return tlsScope.get();
}
@Override
public Span activeSpan() {
final Scope active = active();
return active == null ? null : active.span();
}
@Deprecated
public void addScopeContext(final ScopeContext context) {
scopeContexts.addFirst(context);

View File

@ -603,11 +603,22 @@ class ScopeManagerTest extends DDSpecification {
return this
}
@Override
Scope activate(Span span) {
set(span)
return this
}
@Override
Scope active() {
return get() == null ? null : this
}
@Override
Span activeSpan() {
return active()?.span()
}
String toString() {
return "Ref: " + super.toString()
}

View File

@ -3,7 +3,7 @@ def spockGroovyVer = groovyVer.replaceAll(/\.\d+$/, '')
ext {
versions = [
opentracing: '0.31.0',
opentracing: '0.32.0',
slf4j : "1.7.28",
guava : "20.0", // Last version to support Java 7