Skip to content

Commit 2a5b4b7

Browse files
# This is a combination of 2 commits.
# This is the 1st commit message: make excludefilterprovider interface easier to work with # The commit message #2 will be skipped: # fixup
1 parent 9a95234 commit 2a5b4b7

File tree

8 files changed

+41
-47
lines changed

8 files changed

+41
-47
lines changed

dd-java-agent/agent-bootstrap/src/main/java/datadog/trace/bootstrap/instrumentation/java/concurrent/ExcludeFilter.java

+3-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package datadog.trace.bootstrap.instrumentation.java.concurrent;
22

3+
import java.util.Collection;
34
import java.util.EnumMap;
45
import java.util.EnumSet;
56
import java.util.HashSet;
@@ -78,11 +79,11 @@ protected EnumSet<ExcludeType> computeValue(Class<?> clazz) {
7879
*
7980
* @param excludeTypes the types to exclude
8081
*/
81-
public static void add(Map<ExcludeType, Set<String>> excludeTypes) {
82+
public static void add(Map<ExcludeType, ? extends Collection<String>> excludeTypes) {
8283
if (excludeTypes.isEmpty()) {
8384
return;
8485
}
85-
for (Map.Entry<ExcludeType, Set<String>> entry : excludeTypes.entrySet()) {
86+
for (Map.Entry<ExcludeType, ? extends Collection<String>> entry : excludeTypes.entrySet()) {
8687
Set<String> currentExcluded = excludedClassNames.get(entry.getKey());
8788
currentExcluded.addAll(entry.getValue());
8889
}

dd-java-agent/agent-tooling/src/main/java/datadog/trace/agent/tooling/ExcludeFilterProvider.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package datadog.trace.agent.tooling;
22

33
import datadog.trace.bootstrap.instrumentation.java.concurrent.ExcludeFilter.ExcludeType;
4+
import java.util.Collection;
45
import java.util.Map;
56
import java.util.Set;
67

@@ -17,5 +18,5 @@ public interface ExcludeFilterProvider {
1718
* @return A mapping from {@link ExcludeType} -> {@link Set<String>} for the class names that
1819
* should be excluded from broad instrumentations like {@link Runnable}
1920
*/
20-
Map<ExcludeType, Set<String>> excludedClasses();
21+
Map<ExcludeType, ? extends Collection<String>> excludedClasses();
2122
}

dd-java-agent/instrumentation/akka-concurrent/src/main/java/datadog/trace/instrumentation/akka/concurrent/AkkaForkJoinTaskInstrumentation.java

+7-10
Original file line numberDiff line numberDiff line change
@@ -19,11 +19,9 @@
1919
import datadog.trace.bootstrap.instrumentation.java.concurrent.State;
2020
import datadog.trace.context.TraceScope;
2121
import java.util.Arrays;
22-
import java.util.Collections;
22+
import java.util.Collection;
2323
import java.util.HashMap;
24-
import java.util.HashSet;
2524
import java.util.Map;
26-
import java.util.Set;
2725
import lombok.extern.slf4j.Slf4j;
2826
import net.bytebuddy.asm.Advice;
2927
import net.bytebuddy.description.method.MethodDescription;
@@ -57,14 +55,13 @@ public ElementMatcher<? super TypeDescription> typeMatcher() {
5755
}
5856

5957
@Override
60-
public Map<ExcludeFilter.ExcludeType, Set<String>> excludedClasses() {
61-
return Collections.<ExcludeFilter.ExcludeType, Set<String>>singletonMap(
58+
public Map<ExcludeFilter.ExcludeType, ? extends Collection<String>> excludedClasses() {
59+
return singletonMap(
6260
RUNNABLE_FUTURE,
63-
new HashSet<>(
64-
Arrays.asList(
65-
"akka.dispatch.forkjoin.ForkJoinTask$AdaptedCallable",
66-
"akka.dispatch.forkjoin.ForkJoinTask$AdaptedRunnable",
67-
"akka.dispatch.forkjoin.ForkJoinTask$AdaptedRunnableAction")));
61+
Arrays.asList(
62+
"akka.dispatch.forkjoin.ForkJoinTask$AdaptedCallable",
63+
"akka.dispatch.forkjoin.ForkJoinTask$AdaptedRunnable",
64+
"akka.dispatch.forkjoin.ForkJoinTask$AdaptedRunnableAction"));
6865
}
6966

7067
@Override

dd-java-agent/instrumentation/java-concurrent/java-completablefuture/src/main/java/datadog/trace/instrumentation/java/completablefuture/CompletableFutureUniCompletionInstrumentation.java

+5-5
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,11 @@
1010
import datadog.trace.bootstrap.instrumentation.java.concurrent.ConcurrentState;
1111
import datadog.trace.bootstrap.instrumentation.java.concurrent.ExcludeFilter.ExcludeType;
1212
import java.util.Arrays;
13+
import java.util.Collection;
1314
import java.util.Collections;
1415
import java.util.EnumMap;
15-
import java.util.HashSet;
16+
import java.util.List;
1617
import java.util.Map;
17-
import java.util.Set;
1818
import net.bytebuddy.description.method.MethodDescription;
1919
import net.bytebuddy.description.type.TypeDescription;
2020
import net.bytebuddy.matcher.ElementMatcher;
@@ -73,7 +73,7 @@ public Map<? extends ElementMatcher<? super MethodDescription>, String> transfor
7373
}
7474

7575
@Override
76-
public Map<ExcludeType, Set<String>> excludedClasses() {
76+
public Map<ExcludeType, ? extends Collection<String>> excludedClasses() {
7777
if (!enabled) {
7878
return Collections.emptyMap();
7979
}
@@ -105,8 +105,8 @@ public Map<ExcludeType, Set<String>> excludedClasses() {
105105
// This is not a subclass of UniCompletion and doesn't have a dependent CompletableFuture
106106
// "java.util.concurrent.CompletableFuture$Signaller",
107107
};
108-
Set<String> excludedClasses = new HashSet<>(Arrays.asList(classes));
109-
EnumMap<ExcludeType, Set<String>> excludedTypes = new EnumMap(ExcludeType.class);
108+
List<String> excludedClasses = Arrays.asList(classes);
109+
EnumMap<ExcludeType, Collection<String>> excludedTypes = new EnumMap<>(ExcludeType.class);
110110
excludedTypes.put(ExcludeType.RUNNABLE, excludedClasses);
111111
excludedTypes.put(ExcludeType.FORK_JOIN_TASK, excludedClasses);
112112
excludedTypes.put(ExcludeType.FUTURE, excludedClasses);

dd-java-agent/instrumentation/java-concurrent/src/main/java/datadog/trace/instrumentation/java/concurrent/JavaForkJoinTaskInstrumentation.java

+9-10
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import static datadog.trace.agent.tooling.bytebuddy.matcher.NameMatchers.namedOneOf;
55
import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activeScope;
66
import static datadog.trace.bootstrap.instrumentation.java.concurrent.ExcludeFilter.ExcludeType.RUNNABLE_FUTURE;
7+
import static java.util.Collections.singletonMap;
78
import static net.bytebuddy.matcher.ElementMatchers.isMethod;
89
import static net.bytebuddy.matcher.ElementMatchers.named;
910

@@ -17,11 +18,10 @@
1718
import datadog.trace.bootstrap.instrumentation.java.concurrent.State;
1819
import datadog.trace.context.TraceScope;
1920
import java.util.Arrays;
21+
import java.util.Collection;
2022
import java.util.Collections;
2123
import java.util.HashMap;
22-
import java.util.HashSet;
2324
import java.util.Map;
24-
import java.util.Set;
2525
import java.util.concurrent.ForkJoinTask;
2626
import lombok.extern.slf4j.Slf4j;
2727
import net.bytebuddy.asm.Advice;
@@ -59,7 +59,7 @@ public boolean matches(TypeDescription target) {
5959

6060
@Override
6161
public Map<String, String> contextStoreForAll() {
62-
return Collections.singletonMap("java.util.concurrent.ForkJoinTask", State.class.getName());
62+
return singletonMap("java.util.concurrent.ForkJoinTask", State.class.getName());
6363
}
6464

6565
@Override
@@ -72,14 +72,13 @@ public Map<? extends ElementMatcher<? super MethodDescription>, String> transfor
7272
}
7373

7474
@Override
75-
public Map<ExcludeType, Set<String>> excludedClasses() {
76-
return Collections.<ExcludeType, Set<String>>singletonMap(
75+
public Map<ExcludeType, ? extends Collection<String>> excludedClasses() {
76+
return singletonMap(
7777
RUNNABLE_FUTURE,
78-
new HashSet<>(
79-
Arrays.asList(
80-
"java.util.concurrent.ForkJoinTask$AdaptedCallable",
81-
"java.util.concurrent.ForkJoinTask$AdaptedRunnable",
82-
"java.util.concurrent.ForkJoinTask$AdaptedRunnableAction")));
78+
Arrays.asList(
79+
"java.util.concurrent.ForkJoinTask$AdaptedCallable",
80+
"java.util.concurrent.ForkJoinTask$AdaptedRunnable",
81+
"java.util.concurrent.ForkJoinTask$AdaptedRunnableAction"));
8382
}
8483

8584
public static final class Exec {

dd-java-agent/instrumentation/scala-promise-2.10/src/main/java/datadog/trace/instrumentation/scala/promise/CallbackRunnableInstrumentation.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,10 @@
1616
import datadog.trace.bootstrap.instrumentation.java.concurrent.ExcludeFilter;
1717
import datadog.trace.bootstrap.instrumentation.java.concurrent.State;
1818
import datadog.trace.context.TraceScope;
19+
import java.util.Collection;
1920
import java.util.Collections;
2021
import java.util.HashMap;
2122
import java.util.Map;
22-
import java.util.Set;
2323
import net.bytebuddy.asm.Advice;
2424
import net.bytebuddy.description.method.MethodDescription;
2525
import net.bytebuddy.description.type.TypeDescription;
@@ -53,7 +53,7 @@ public Map<? extends ElementMatcher<? super MethodDescription>, String> transfor
5353
}
5454

5555
@Override
56-
public Map<ExcludeFilter.ExcludeType, Set<String>> excludedClasses() {
56+
public Map<ExcludeFilter.ExcludeType, ? extends Collection<String>> excludedClasses() {
5757
// force other instrumentations (e.g. Runnable) not to deal with this type
5858
return singletonMap(RUNNABLE, Collections.singleton("scala.concurrent.impl.CallbackRunnable"));
5959
}

dd-java-agent/instrumentation/scala-promise-2.13/src/main/java/datadog/trace/instrumentation/scala/concurrent/PromiseTransformationInstrumentation.java

+3-3
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,10 @@
1616
import datadog.trace.bootstrap.instrumentation.java.concurrent.ExcludeFilter;
1717
import datadog.trace.bootstrap.instrumentation.java.concurrent.State;
1818
import datadog.trace.context.TraceScope;
19+
import java.util.Collection;
1920
import java.util.Collections;
2021
import java.util.HashMap;
2122
import java.util.Map;
22-
import java.util.Set;
2323
import net.bytebuddy.asm.Advice;
2424
import net.bytebuddy.description.method.MethodDescription;
2525
import net.bytebuddy.description.type.TypeDescription;
@@ -41,7 +41,7 @@ public ElementMatcher<TypeDescription> typeMatcher() {
4141

4242
@Override
4343
public Map<String, String> contextStore() {
44-
return singletonMap("scala.concurrent.impl.Promise$Transformation", State.class.getName());
44+
return singletonMap("s ocala.concurrent.impl.Promise$Transformation", State.class.getName());
4545
}
4646

4747
@Override
@@ -54,7 +54,7 @@ public Map<? extends ElementMatcher<? super MethodDescription>, String> transfor
5454
}
5555

5656
@Override
57-
public Map<ExcludeFilter.ExcludeType, Set<String>> excludedClasses() {
57+
public Map<ExcludeFilter.ExcludeType, ? extends Collection<String>> excludedClasses() {
5858
// make sure nothing else instruments this
5959
return singletonMap(
6060
RUNNABLE, Collections.singleton("scala.concurrent.impl.Promise$Transformation"));

dd-java-agent/testing/src/test/java/excludefilter/ExcludeFilterProviderTestInstrumentation.java

+10-14
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,11 @@
88
import datadog.trace.agent.tooling.Instrumenter;
99
import datadog.trace.bootstrap.instrumentation.java.concurrent.ExcludeFilter;
1010
import java.util.Arrays;
11+
import java.util.Collection;
1112
import java.util.Collections;
1213
import java.util.EnumMap;
1314
import java.util.HashMap;
14-
import java.util.HashSet;
1515
import java.util.Map;
16-
import java.util.Set;
1716
import java.util.concurrent.Callable;
1817
import net.bytebuddy.description.method.MethodDescription;
1918
import net.bytebuddy.description.type.TypeDescription;
@@ -46,22 +45,19 @@ public Map<String, String> contextStoreForAll() {
4645
}
4746

4847
@Override
49-
public Map<ExcludeFilter.ExcludeType, Set<String>> excludedClasses() {
50-
EnumMap<ExcludeFilter.ExcludeType, Set<String>> excludedTypes =
51-
new EnumMap(ExcludeFilter.ExcludeType.class);
48+
public Map<ExcludeFilter.ExcludeType, ? extends Collection<String>> excludedClasses() {
49+
EnumMap<ExcludeFilter.ExcludeType, Collection<String>> excludedTypes =
50+
new EnumMap<>(ExcludeFilter.ExcludeType.class);
5251
excludedTypes.put(
5352
RUNNABLE,
54-
new HashSet(
55-
Arrays.asList(
56-
ExcludedRunnable.class.getName(), CallableExcludedRunnable.class.getName())));
53+
Arrays.asList(ExcludedRunnable.class.getName(), CallableExcludedRunnable.class.getName()));
5754
excludedTypes.put(
5855
CALLABLE,
59-
new HashSet(
60-
Arrays.asList(
61-
ExcludedCallable.class.getName(),
62-
RunnableExcludedCallable.class.getName(),
63-
"net.sf.cglib.core.internal.LoadingCache$2" // Excluded for global ignore matcher
64-
)));
56+
Arrays.asList(
57+
ExcludedCallable.class.getName(),
58+
RunnableExcludedCallable.class.getName(),
59+
"net.sf.cglib.core.internal.LoadingCache$2" // Excluded for global ignore matcher
60+
));
6561
return excludedTypes;
6662
}
6763

0 commit comments

Comments
 (0)