Skip to content
Merged
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

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,34 +1,23 @@
package datadog.trace.instrumentation.aws.v2;

import static datadog.trace.agent.tooling.bytebuddy.matcher.NameMatchers.named;
import static java.util.Collections.singletonMap;
import static net.bytebuddy.matcher.ElementMatchers.isMethod;

import com.google.auto.service.AutoService;
import datadog.trace.agent.tooling.Instrumenter;
import datadog.trace.agent.tooling.InstrumenterModule;
import datadog.trace.bootstrap.InstrumentationContext;
import java.util.List;
import java.util.Map;
import net.bytebuddy.asm.Advice;
import software.amazon.awssdk.core.interceptor.ExecutionInterceptor;

/** AWS SDK v2 instrumentation */
@AutoService(InstrumenterModule.class)
public final class AwsClientInstrumentation extends AbstractAwsClientInstrumentation
public final class AwsClientInstrumentation
implements Instrumenter.ForSingleType, Instrumenter.HasMethodAdvice {

@Override
public String instrumentedType() {
return "software.amazon.awssdk.core.client.builder.SdkDefaultClientBuilder";
}

@Override
public Map<String, String> contextStore() {
return singletonMap(
"software.amazon.awssdk.services.sqs.model.ReceiveMessageResponse", "java.lang.String");
}

@Override
public void methodAdvice(MethodTransformer transformer) {
transformer.applyAdvice(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,9 +12,7 @@
import static net.bytebuddy.matcher.ElementMatchers.isPublic;
import static net.bytebuddy.matcher.ElementMatchers.takesArgument;

import com.google.auto.service.AutoService;
import datadog.trace.agent.tooling.Instrumenter;
import datadog.trace.agent.tooling.InstrumenterModule;
import datadog.trace.bootstrap.instrumentation.api.AgentSpan;
import datadog.trace.bootstrap.instrumentation.api.AgentTracer;
import datadog.trace.context.TraceScope;
Expand All @@ -28,8 +26,7 @@
* Separate instrumentation class to close aws request scope right after request has been submitted
* for execution for Sync clients.
*/
@AutoService(InstrumenterModule.class)
public final class AwsHttpClientInstrumentation extends AbstractAwsClientInstrumentation
public final class AwsHttpClientInstrumentation
implements Instrumenter.ForTypeHierarchy, Instrumenter.HasMethodAdvice {

@Override
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
package datadog.trace.instrumentation.aws.v2;

import com.google.auto.service.AutoService;
import datadog.trace.agent.tooling.Instrumenter;
import datadog.trace.agent.tooling.InstrumenterModule;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.Map;

/** Groups the instrumentations for AWS SDK 2.2+. */
@AutoService(InstrumenterModule.class)
public final class AwsSdkModule extends InstrumenterModule.Tracing {

public AwsSdkModule() {
super("aws-sdk");
}

@Override
public String[] helperClassNames() {
return new String[] {
"datadog.trace.instrumentation.aws.v2.AwsSdkClientDecorator",
"datadog.trace.instrumentation.aws.v2.TracingExecutionInterceptor"
};
}

@Override
public Map<String, String> contextStore() {
return Collections.singletonMap(
"software.amazon.awssdk.services.sqs.model.ReceiveMessageResponse", "java.lang.String");
}

@Override
public List<Instrumenter> typeInstrumentations() {
return Arrays.asList(new AwsClientInstrumentation(), new AwsHttpClientInstrumentation());
}
}

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -3,23 +3,15 @@
import static datadog.trace.agent.tooling.bytebuddy.matcher.NameMatchers.named;
import static net.bytebuddy.matcher.ElementMatchers.isMethod;

import com.google.auto.service.AutoService;
import datadog.trace.agent.tooling.Instrumenter;
import datadog.trace.agent.tooling.InstrumenterModule;
import datadog.trace.api.Config;
import java.util.List;
import net.bytebuddy.asm.Advice;
import software.amazon.awssdk.core.interceptor.ExecutionInterceptor;

/** AWS SDK v2 instrumentation */
@AutoService(InstrumenterModule.class)
public final class SqsClientInstrumentation extends InstrumenterModule.Tracing
public final class SqsClientInstrumentation
implements Instrumenter.ForSingleType, Instrumenter.HasMethodAdvice {
private static final String INSTRUMENTATION_NAME = "aws-sdk";

public SqsClientInstrumentation() {
super(INSTRUMENTATION_NAME);
}

@Override
public String instrumentedType() {
Expand All @@ -33,13 +25,6 @@ public void methodAdvice(MethodTransformer transformer) {
SqsClientInstrumentation.class.getName() + "$AwsSqsBuilderAdvice");
}

@Override
public String[] helperClassNames() {
return new String[] {
packageName + ".SqsInterceptor", packageName + ".MessageAttributeInjector"
};
}

public static class AwsSqsBuilderAdvice {
@Advice.OnMethodExit(suppress = Throwable.class)
public static void methodExit(@Advice.Return final List<ExecutionInterceptor> interceptors) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,7 @@
import static net.bytebuddy.matcher.ElementMatchers.takesArgument;

import com.amazon.sqs.javamessaging.message.SQSMessage;
import com.google.auto.service.AutoService;
import datadog.trace.agent.tooling.Instrumenter;
import datadog.trace.agent.tooling.InstrumenterModule;
import datadog.trace.api.Config;
import java.util.HashMap;
import java.util.Map;
Expand All @@ -17,14 +15,9 @@
import software.amazon.awssdk.services.sqs.model.Message;
import software.amazon.awssdk.services.sqs.model.MessageAttributeValue;

@AutoService(InstrumenterModule.class)
public class SqsJmsMessageInstrumentation extends AbstractSqsInstrumentation
public final class SqsJmsMessageInstrumentation
implements Instrumenter.ForSingleType, Instrumenter.HasMethodAdvice {

public SqsJmsMessageInstrumentation() {
super("jms");
}

@Override
public String instrumentedType() {
return "com.amazon.sqs.javamessaging.message.SQSMessage";
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
package datadog.trace.instrumentation.aws.v2.sqs;

import static java.util.Collections.singleton;

import com.google.auto.service.AutoService;
import datadog.trace.agent.tooling.Instrumenter;
import datadog.trace.agent.tooling.InstrumenterModule;
import datadog.trace.api.InstrumenterConfig;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Map;

/** Groups the instrumentations for AWS SQS SDK 2.0+. */
@AutoService(InstrumenterModule.class)
public final class SqsModule extends InstrumenterModule.Tracing {

public SqsModule() {
super("sqs", "aws-sdk");
}

@Override
public String[] helperClassNames() {
return new String[] {
"datadog.trace.instrumentation.aws.v2.sqs.SqsInterceptor",
"datadog.trace.instrumentation.aws.v2.sqs.MessageAttributeInjector",
"datadog.trace.instrumentation.aws.v2.sqs.MessageExtractAdapter",
"datadog.trace.instrumentation.aws.v2.sqs.SqsDecorator",
"datadog.trace.instrumentation.aws.v2.sqs.TracingIterator",
"datadog.trace.instrumentation.aws.v2.sqs.TracingList",
"datadog.trace.instrumentation.aws.v2.sqs.TracingListIterator"
};
}

@Override
public Map<String, String> contextStore() {
return Collections.singletonMap(
"software.amazon.awssdk.services.sqs.model.ReceiveMessageResponse", "java.lang.String");
}

@Override
public List<Instrumenter> typeInstrumentations() {
final List<Instrumenter> ret = new ArrayList<>(4);
ret.add(new SqsClientInstrumentation());
ret.add(new SqsReceiveRequestInstrumentation());
// we don't need to instrument messages when we're doing legacy AWS-SDK tracing
if (!InstrumenterConfig.get().isLegacyInstrumentationEnabled(false, "aws-sdk")) {
ret.add(new SqsReceiveResultInstrumentation());
}
if (InstrumenterConfig.get().isIntegrationEnabled(singleton("jms"), true)) {
ret.add(new SqsJmsMessageInstrumentation());
}
return ret;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,17 +5,14 @@
import static java.util.Arrays.asList;
import static net.bytebuddy.matcher.ElementMatchers.isMethod;

import com.google.auto.service.AutoService;
import datadog.trace.agent.tooling.Instrumenter;
import datadog.trace.agent.tooling.InstrumenterModule;
import datadog.trace.api.Config;
import java.util.List;
import net.bytebuddy.asm.Advice;
import net.bytebuddy.description.type.TypeDescription;
import net.bytebuddy.matcher.ElementMatcher;

@AutoService(InstrumenterModule.class)
public class SqsReceiveRequestInstrumentation extends AbstractSqsInstrumentation
public final class SqsReceiveRequestInstrumentation
implements Instrumenter.ForSingleType,
Instrumenter.WithTypeStructure,
Instrumenter.HasMethodAdvice {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,53 +1,23 @@
package datadog.trace.instrumentation.aws.v2.sqs;

import static datadog.trace.agent.tooling.bytebuddy.matcher.NameMatchers.named;
import static java.util.Collections.singletonMap;
import static net.bytebuddy.matcher.ElementMatchers.isMethod;

import com.google.auto.service.AutoService;
import datadog.trace.agent.tooling.Instrumenter;
import datadog.trace.agent.tooling.InstrumenterModule;
import datadog.trace.api.InstrumenterConfig;
import datadog.trace.bootstrap.InstrumentationContext;
import java.util.List;
import java.util.Map;
import net.bytebuddy.asm.Advice;
import software.amazon.awssdk.services.sqs.model.Message;
import software.amazon.awssdk.services.sqs.model.ReceiveMessageResponse;

@AutoService(InstrumenterModule.class)
public class SqsReceiveResultInstrumentation extends AbstractSqsInstrumentation
public final class SqsReceiveResultInstrumentation
implements Instrumenter.ForSingleType, Instrumenter.HasMethodAdvice {

@Override
public String instrumentedType() {
return "software.amazon.awssdk.services.sqs.model.ReceiveMessageResponse";
}

@Override
public boolean isEnabled() {
return super.isEnabled()
// we don't need to instrument messages when we're doing legacy AWS-SDK tracing
&& !InstrumenterConfig.get().isLegacyInstrumentationEnabled(false, "aws-sdk");
}

@Override
public String[] helperClassNames() {
return new String[] {
packageName + ".MessageExtractAdapter",
packageName + ".SqsDecorator",
packageName + ".TracingIterator",
packageName + ".TracingList",
packageName + ".TracingListIterator"
};
}

@Override
public Map<String, String> contextStore() {
return singletonMap(
"software.amazon.awssdk.services.sqs.model.ReceiveMessageResponse", "java.lang.String");
}

@Override
public void methodAdvice(MethodTransformer transformer) {
transformer.applyAdvice(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,38 +6,17 @@
import static net.bytebuddy.matcher.ElementMatchers.isConstructor;
import static net.bytebuddy.matcher.ElementMatchers.takesArgument;

import com.google.auto.service.AutoService;
import com.hazelcast.client.impl.HazelcastClientInstanceImpl;
import com.hazelcast.client.proxy.ClientMapProxy;
import com.hazelcast.client.spi.impl.ClientNonSmartInvocationServiceImpl;
import com.hazelcast.spi.discovery.DiscoveryStrategy;
import datadog.trace.agent.tooling.Instrumenter;
import datadog.trace.agent.tooling.InstrumenterModule;
import datadog.trace.bootstrap.instrumentation.api.AgentSpan;
import net.bytebuddy.asm.Advice;

@AutoService(InstrumenterModule.class)
public class ClientInvocationInstrumentation extends InstrumenterModule.Tracing
public final class ClientInvocationInstrumentation
implements Instrumenter.ForSingleType, Instrumenter.HasMethodAdvice {

public ClientInvocationInstrumentation() {
super("hazelcast_legacy");
}

@Override
protected boolean defaultEnabled() {
return false;
}

@Override
public String[] helperClassNames() {
return new String[] {
packageName + ".HazelcastConstants",
packageName + ".DistributedObjectDecorator",
packageName + ".DistributedObjectDecorator$1"
};
}

@Override
public String instrumentedType() {
return "com.hazelcast.client.spi.impl.ClientInvocation";
Expand Down
Loading