Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -166,7 +166,7 @@ public Context extract(REQUEST_CARRIER carrier) {
* @return A new context bundling the span, child of the given parent context.
*/
public Context startSpan(REQUEST_CARRIER carrier, Context parentContext) {
String instrumentationName = primaryInstrumentationName();
String instrumentationName = component().toString();
AgentSpanContext extracted = getExtractedSpanContext(parentContext);
// Call IG callbacks
extracted = callIGCallbackStart(extracted);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ public class HttpUrlState {
private volatile boolean finished = false;

public AgentSpan start(final HttpURLConnection connection) {
span = startSpan(DECORATE.operationName());
span = startSpan("httpurlconnection", DECORATE.operationName());
try (final AgentScope scope = activateSpan(span)) {
DECORATE.afterStart(span);
DECORATE.onRequest(span, connection);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ public void start() {
if (Config.get().getIastActivation() == ProductActivation.FULLY_ENABLED) {
tagContext.withRequestContextDataIast(context.getIastContext());
}
span = AgentTracer.startSpan("benchmark", tagContext);
span = AgentTracer.startSpan("iast", "benchmark", tagContext);
scope = AgentTracer.activateSpan(span);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ public static void sendSampleTraces(final int count, final double interval) thro

int numTraces = 0;
while (++numTraces <= count || count < 0) {
AgentSpan span = AgentTracer.startSpan("sample");
AgentSpan span = AgentTracer.startSpan("datadog", "sample");
try {
Thread.sleep(Math.max((long) (1000.0 * interval), 1L));
} catch (InterruptedException ignore) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ import datadog.metrics.impl.MonitoringImpl
import datadog.metrics.api.statsd.StatsDClient
import datadog.instrument.classinject.ClassInjector
import datadog.trace.agent.test.asserts.ListWriterAssert
import datadog.trace.agent.test.asserts.TagsAssert
import datadog.trace.agent.test.datastreams.MockFeaturesDiscovery
import datadog.trace.agent.test.datastreams.RecordingDatastreamsPayloadWriter
import datadog.trace.agent.tooling.AgentInstaller
Expand All @@ -55,6 +56,7 @@ import datadog.trace.bootstrap.ActiveSubsystems
import datadog.trace.bootstrap.InstrumentationErrors
import datadog.trace.bootstrap.debugger.DebuggerContext
import datadog.trace.bootstrap.instrumentation.api.AgentSpan
import datadog.trace.bootstrap.instrumentation.api.AgentSpanContext
import datadog.trace.bootstrap.instrumentation.api.AgentTracer
import datadog.trace.common.metrics.EventListener
import datadog.trace.common.metrics.Sink
Expand Down Expand Up @@ -405,15 +407,17 @@ abstract class InstrumentationSpecification extends DDSpecification implements A
TracerInstaller.forceInstallGlobalTracer(TEST_TRACER)

boolean enabledFinishTimingChecks = this.enabledFinishTimingChecks()
TEST_TRACER.startSpan(*_) >> {
AgentSpan agentSpan = callRealMethod()
if (!enabledFinishTimingChecks) {
return agentSpan
}

def trackingSpan = new TrackingSpanDecorator(agentSpan, spanFinishLocations, originalToTrackingSpan, useStrictTraceWrites())
originalToTrackingSpan[agentSpan] = trackingSpan
return trackingSpan
TEST_TRACER.startSpan(_ as String, _ as CharSequence) >> { String instrName, CharSequence spanName ->
trackStartSpan(callRealMethod(), instrName, enabledFinishTimingChecks)
}
TEST_TRACER.startSpan(_ as String, _ as CharSequence, _ as Long) >> { String instrName, CharSequence spanName, long micros ->
trackStartSpan(callRealMethod(), instrName, enabledFinishTimingChecks)
}
TEST_TRACER.startSpan(_ as String, _ as CharSequence, _ as AgentSpanContext) >> { String instrName, CharSequence spanName, AgentSpanContext ctx ->
trackStartSpan(callRealMethod(), instrName, enabledFinishTimingChecks)
}
TEST_TRACER.startSpan(_ as String, _ as CharSequence, _ as AgentSpanContext, _ as Long) >> { String instrName, CharSequence spanName, AgentSpanContext ctx, long micros ->
trackStartSpan(callRealMethod(), instrName, enabledFinishTimingChecks)
}

ClassInjector.enableClassInjection(INSTRUMENTATION)
Expand Down Expand Up @@ -571,6 +575,16 @@ abstract class InstrumentationSpecification extends DDSpecification implements A
return true
}

protected AgentSpan trackStartSpan(AgentSpan span, String instrName, boolean enabledFinishTimingChecks) {
TagsAssert.INSTRUMENTATION_NAMES[span.spanId] = instrName
if (!enabledFinishTimingChecks) {
return span
}
def trackingSpan = new TrackingSpanDecorator(span, spanFinishLocations, originalToTrackingSpan, useStrictTraceWrites())
originalToTrackingSpan[span] = trackingSpan
return trackingSpan
}

void assertTraces(
final int size,
@ClosureParams(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ abstract class LogContextInjectionTestBase extends InstrumentationSpecification
def "Log context shows trace and span ids for active scope"() {
when:
put("foo", "bar")
AgentSpan rootSpan = startSpan("root")
AgentSpan rootSpan = startSpan("test", "root")
AgentScope rootScope = activateSpan(rootSpan)

then:
Expand All @@ -50,7 +50,7 @@ abstract class LogContextInjectionTestBase extends InstrumentationSpecification
get("foo") == "bar"

when:
AgentSpan childSpan = startSpan("child")
AgentSpan childSpan = startSpan("test", "child")
AgentScope childScope = activateSpan(childSpan)

then:
Expand Down Expand Up @@ -93,7 +93,7 @@ abstract class LogContextInjectionTestBase extends InstrumentationSpecification
@Override
void run() {
// other trace in scope
final AgentSpan thread2Span = startSpan("root2")
final AgentSpan thread2Span = startSpan("test", "root2")
final AgentScope thread2Scope = activateSpan(thread2Span)
try {
thread2TraceId.set(get(CorrelationIdentifier.getTraceIdKey()))
Expand All @@ -104,7 +104,7 @@ abstract class LogContextInjectionTestBase extends InstrumentationSpecification
}
}

final AgentSpan mainSpan = startSpan("root")
final AgentSpan mainSpan = startSpan("test", "root")
final AgentScope mainScope = activateSpan(mainSpan)
thread1.start()
thread2.start()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -94,7 +94,7 @@ public void withMethod(final AgentSpan span, final String methodName) {
}

public AgentSpan startAerospikeSpan(final String methodName) {
final AgentSpan span = startSpan(OPERATION_NAME);
final AgentSpan span = startSpan("aerospike", OPERATION_NAME);
afterStart(span);
withMethod(span, methodName);
return span;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -133,7 +133,7 @@ class Greeter(message: String, receiverActor: ActorRef) extends Actor {
case Greet =>
receiverActor ! Greeting(greeting)
case Leak(leak) =>
val span = startSpan(greeting)
val span = startSpan("test", greeting)
span.setResourceName(leak)
activateSpan(span)
span.finish()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ protected Integer compute() {
return parent;
} else {
int next = parent + 1;
AgentSpan span = startSpan(Integer.toString(next));
AgentSpan span = startSpan("test", Integer.toString(next));
try (AgentScope scope = activateSpan(span)) {
LinearTask child = new LinearTask(next, depth);
return child.fork().join();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
import static datadog.trace.agent.tooling.bytebuddy.matcher.NameMatchers.named;
import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.captureActiveSpan;
import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.startSpan;
import static datadog.trace.instrumentation.apachehttpasyncclient.ApacheHttpAsyncClientDecorator.APACHE_HTTPASYNCCLIENT;
import static datadog.trace.instrumentation.apachehttpasyncclient.ApacheHttpAsyncClientDecorator.DECORATE;
import static datadog.trace.instrumentation.apachehttpasyncclient.ApacheHttpAsyncClientDecorator.HTTP_REQUEST;
import static java.util.Arrays.asList;
Expand Down Expand Up @@ -102,7 +103,7 @@ public static AgentSpan methodEnter(
}

final AgentScope.Continuation parentContinuation = captureActiveSpan();
final AgentSpan clientSpan = startSpan(HTTP_REQUEST);
final AgentSpan clientSpan = startSpan(APACHE_HTTPASYNCCLIENT.toString(), HTTP_REQUEST);
DECORATE.afterStart(clientSpan);
((DelegatingRequestProducer) requestProducer).setSpan(clientSpan);
futureCallback =
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import static datadog.context.Context.current;
import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activateSpan;
import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.startSpan;
import static datadog.trace.instrumentation.apachehttpclient.ApacheHttpClientDecorator.APACHE_HTTP_CLIENT;
import static datadog.trace.instrumentation.apachehttpclient.ApacheHttpClientDecorator.DECORATE;
import static datadog.trace.instrumentation.apachehttpclient.ApacheHttpClientDecorator.HTTP_REQUEST;
import static datadog.trace.instrumentation.apachehttpclient.HttpHeadersInjectAdapter.SETTER;
Expand Down Expand Up @@ -35,7 +36,7 @@ public static AgentScope doMethodEnter(HttpHost host, HttpRequest request) {
}

private static AgentScope activateHttpSpan(final HttpUriRequest request) {
final AgentSpan span = startSpan(HTTP_REQUEST);
final AgentSpan span = startSpan(APACHE_HTTP_CLIENT.toString(), HTTP_REQUEST);
final AgentScope scope = activateSpan(span);

DECORATE.afterStart(span);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activateSpan;
import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.captureActiveSpan;
import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.startSpan;
import static datadog.trace.instrumentation.apachehttpclient5.ApacheHttpClientDecorator.APACHE_HTTP_CLIENT;
import static datadog.trace.instrumentation.apachehttpclient5.ApacheHttpClientDecorator.DECORATE;
import static datadog.trace.instrumentation.apachehttpclient5.ApacheHttpClientDecorator.HTTP_REQUEST;
import static net.bytebuddy.matcher.ElementMatchers.isMethod;
Expand Down Expand Up @@ -113,7 +114,7 @@ public static AgentScope methodEnter(
@Advice.Argument(value = 4, readOnly = false) FutureCallback<?> futureCallback) {

final AgentScope.Continuation parentContinuation = captureActiveSpan();
final AgentSpan clientSpan = startSpan(HTTP_REQUEST);
final AgentSpan clientSpan = startSpan(APACHE_HTTP_CLIENT.toString(), HTTP_REQUEST);
final AgentScope clientScope = activateSpan(clientSpan);
DECORATE.afterStart(clientSpan);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import static datadog.context.Context.current;
import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activateSpan;
import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.startSpan;
import static datadog.trace.instrumentation.apachehttpclient5.ApacheHttpClientDecorator.APACHE_HTTP_CLIENT;
import static datadog.trace.instrumentation.apachehttpclient5.ApacheHttpClientDecorator.DECORATE;
import static datadog.trace.instrumentation.apachehttpclient5.ApacheHttpClientDecorator.HTTP_REQUEST;
import static datadog.trace.instrumentation.apachehttpclient5.HttpHeadersInjectAdapter.SETTER;
Expand Down Expand Up @@ -35,7 +36,7 @@ public static AgentScope doMethodEnter(HttpHost host, HttpRequest request) {
}

private static AgentScope activateHttpSpan(final HttpRequest request) {
final AgentSpan span = startSpan(HTTP_REQUEST);
final AgentSpan span = startSpan(APACHE_HTTP_CLIENT.toString(), HTTP_REQUEST);
final AgentScope scope = activateSpan(span);

DECORATE.afterStart(span);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activateSpan;
import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activeSpan;
import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.startSpan;
import static datadog.trace.instrumentation.armeria.grpc.client.GrpcClientDecorator.COMPONENT_NAME;
import static datadog.trace.instrumentation.armeria.grpc.client.GrpcClientDecorator.DECORATE;
import static datadog.trace.instrumentation.armeria.grpc.client.GrpcClientDecorator.GRPC_MESSAGE;
import static datadog.trace.instrumentation.armeria.grpc.client.GrpcClientDecorator.OPERATION_NAME;
Expand Down Expand Up @@ -211,7 +212,8 @@ public static AgentScope before() {
AgentSpan clientSpan = activeSpan();
if (clientSpan != null && OPERATION_NAME.equals(clientSpan.getOperationName())) {
AgentSpan messageSpan =
startSpan(GRPC_MESSAGE).setTag("message.type", clientSpan.getTag("response.type"));
startSpan(COMPONENT_NAME.toString(), GRPC_MESSAGE)
.setTag("message.type", clientSpan.getTag("response.type"));
DECORATE.afterStart(messageSpan);
return activateSpan(messageSpan);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -95,7 +95,7 @@ public <ReqT, RespT> AgentSpan startCall(MethodDescriptor<ReqT, RespT> method) {
return AgentTracer.blackholeSpan();
}
AgentSpan span =
startSpan("grpc", OPERATION_NAME)
startSpan(COMPONENT_NAME.toString(), OPERATION_NAME)
.setTag("request.type", requestMessageType(method))
.setTag("response.type", responseMessageType(method))
// method.getServiceName() may not be available on some grpc versions
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -93,9 +93,9 @@ static AgentScope enter(
AgentSpanContext lambdaContext = AgentTracer.get().notifyLambdaStart(in, lambdaRequestId);
final AgentSpan span;
if (null == lambdaContext) {
span = startSpan(INVOCATION_SPAN_NAME);
span = startSpan("java-aws-sdk", INVOCATION_SPAN_NAME);
} else {
span = startSpan(INVOCATION_SPAN_NAME, lambdaContext);
span = startSpan("java-aws-sdk", INVOCATION_SPAN_NAME, lambdaContext);
}
span.setSpanType(InternalSpanTypes.SERVERLESS);
span.setTag("request_id", lambdaRequestId);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.traceConfig;
import static datadog.trace.bootstrap.instrumentation.api.Java8BytecodeBridge.spanFromContext;
import static datadog.trace.instrumentation.aws.v0.AwsSdkClientDecorator.AWS_LEGACY_TRACING;
import static datadog.trace.instrumentation.aws.v0.AwsSdkClientDecorator.COMPONENT_NAME;
import static datadog.trace.instrumentation.aws.v0.AwsSdkClientDecorator.DECORATE;

import com.amazonaws.AmazonWebServiceRequest;
Expand Down Expand Up @@ -65,7 +66,7 @@ public void beforeRequest(final Request<?> request) {
span.setOperationName(AwsNameCache.spanName(request));
} else {
// this is the most common code path
span = startSpan("aws-sdk", AwsNameCache.spanName(request));
span = startSpan(COMPONENT_NAME.toString(), AwsNameCache.spanName(request));
context = span; // TODO If DSM is enabled, add DSM context here too
}
DECORATE.afterStart(span);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.blackholeSpan;
import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.startSpan;
import static datadog.trace.instrumentation.aws.v2.AwsSdkClientDecorator.AWS_LEGACY_TRACING;
import static datadog.trace.instrumentation.aws.v2.AwsSdkClientDecorator.COMPONENT_NAME;
import static datadog.trace.instrumentation.aws.v2.AwsSdkClientDecorator.DECORATE;

import datadog.context.Context;
Expand Down Expand Up @@ -54,7 +55,8 @@ public void beforeExecution(
return; // SQS messages spans are created by aws-java-sqs-2.0
}

final AgentSpan span = startSpan("aws-sdk", DECORATE.spanName(executionAttributes));
final AgentSpan span =
startSpan(COMPONENT_NAME.toString(), DECORATE.spanName(executionAttributes));
// TODO If DSM is enabled, add DSM context here too
DECORATE.afterStart(span);
executionAttributes.putAttribute(CONTEXT_ATTRIBUTE, span);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -109,7 +109,7 @@ public AmazonWebServiceRequest beforeMarshalling(AmazonWebServiceRequest request
}

private AgentSpan newSpan(AmazonWebServiceRequest request) {
final AgentSpan span = AgentTracer.startSpan("aws.sns.send");
final AgentSpan span = AgentTracer.startSpan("java-aws-sdk", "aws.sns.send");
// pass the span to TracingRequestHandler in the sdk instrumentation where it'll be enriched &
// activated
// TODO If DSM is enabled, add DSM context here too
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
import static datadog.trace.bootstrap.instrumentation.api.URIUtils.urlFileName;
import static datadog.trace.instrumentation.aws.v1.sqs.MessageExtractAdapter.GETTER;
import static datadog.trace.instrumentation.aws.v1.sqs.SqsDecorator.BROKER_DECORATE;
import static datadog.trace.instrumentation.aws.v1.sqs.SqsDecorator.COMPONENT_NAME;
import static datadog.trace.instrumentation.aws.v1.sqs.SqsDecorator.CONSUMER_DECORATE;
import static datadog.trace.instrumentation.aws.v1.sqs.SqsDecorator.SQS_INBOUND_OPERATION;
import static datadog.trace.instrumentation.aws.v1.sqs.SqsDecorator.SQS_TIME_IN_QUEUE_OPERATION;
Expand Down Expand Up @@ -89,6 +90,7 @@ protected void startNewMessageSpan(Message message) {
if (timeInQueueStart > 0) {
queueSpan =
startSpan(
"aws-sdk",
SQS_TIME_IN_QUEUE_OPERATION,
spanContext,
MILLISECONDS.toMicros(timeInQueueStart));
Expand All @@ -102,7 +104,7 @@ protected void startNewMessageSpan(Message message) {
// re-use this context for any other messages received in this batch
batchContext = spanContext;
}
AgentSpan span = startSpan(SQS_INBOUND_OPERATION, batchContext);
AgentSpan span = startSpan(COMPONENT_NAME.toString(), SQS_INBOUND_OPERATION, batchContext);

DataStreamsTags tags = create("sqs", INBOUND, urlFileName(queueUrl));
AgentTracer.get().getDataStreamsMonitoring().setCheckpoint(span, create(tags, 0, 0));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
import static datadog.trace.bootstrap.instrumentation.api.URIUtils.urlFileName;
import static datadog.trace.instrumentation.aws.v2.sqs.MessageExtractAdapter.GETTER;
import static datadog.trace.instrumentation.aws.v2.sqs.SqsDecorator.BROKER_DECORATE;
import static datadog.trace.instrumentation.aws.v2.sqs.SqsDecorator.COMPONENT_NAME;
import static datadog.trace.instrumentation.aws.v2.sqs.SqsDecorator.CONSUMER_DECORATE;
import static datadog.trace.instrumentation.aws.v2.sqs.SqsDecorator.SQS_INBOUND_OPERATION;
import static datadog.trace.instrumentation.aws.v2.sqs.SqsDecorator.SQS_TIME_IN_QUEUE_OPERATION;
Expand Down Expand Up @@ -91,6 +92,7 @@ protected void startNewMessageSpan(Message message) {
if (timeInQueueStart > 0) {
queueSpan =
startSpan(
"aws-sdk",
SQS_TIME_IN_QUEUE_OPERATION,
spanContext,
MILLISECONDS.toMicros(timeInQueueStart));
Expand All @@ -104,7 +106,7 @@ protected void startNewMessageSpan(Message message) {
// re-use this context for any other messages received in this batch
batchContext = spanContext;
}
AgentSpan span = startSpan(SQS_INBOUND_OPERATION, batchContext);
AgentSpan span = startSpan(COMPONENT_NAME.toString(), SQS_INBOUND_OPERATION, batchContext);

DataStreamsTags tags = create("sqs", INBOUND, urlFileName(queueUrl));
AgentTracer.get().getDataStreamsMonitoring().setCheckpoint(span, create(tags, 0, 0));
Expand Down
Loading
Loading