Skip to content

Commit 28df9fb

Browse files
authored
Merge pull request #203 from DataDog/ark/the_weak_must_die
Use a thread-safe synchronized weak hash map
2 parents 53ceb74 + d731789 commit 28df9fb

File tree

4 files changed

+11
-12
lines changed

4 files changed

+11
-12
lines changed

dd-java-agent/instrumentation/jdbc/src/main/java/datadog/trace/instrumentation/jdbc/ConnectionInstrumentation.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
import datadog.trace.agent.tooling.Instrumenter;
1515
import java.sql.Connection;
1616
import java.sql.PreparedStatement;
17+
import java.util.Collections;
1718
import java.util.Map;
1819
import java.util.WeakHashMap;
1920
import lombok.Data;
@@ -22,8 +23,10 @@
2223

2324
@AutoService(Instrumenter.class)
2425
public final class ConnectionInstrumentation implements Instrumenter {
25-
public static final Map<Connection, DBInfo> connectionInfo = new WeakHashMap<>();
26-
public static final Map<PreparedStatement, String> preparedStatements = new WeakHashMap<>();
26+
public static final Map<Connection, DBInfo> connectionInfo =
27+
Collections.synchronizedMap(new WeakHashMap<Connection, DBInfo>());
28+
public static final Map<PreparedStatement, String> preparedStatements =
29+
Collections.synchronizedMap(new WeakHashMap<PreparedStatement, String>());
2730

2831
@Override
2932
public AgentBuilder instrument(final AgentBuilder agentBuilder) {

dd-java-agent/instrumentation/spring-web/src/main/java/datadog/trace/instrumentation/springweb/SpringWebInstrumentation.java

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,17 +16,13 @@
1616
import datadog.trace.api.DDTags;
1717
import io.opentracing.Scope;
1818
import io.opentracing.util.GlobalTracer;
19-
import java.sql.PreparedStatement;
20-
import java.util.Map;
21-
import java.util.WeakHashMap;
2219
import javax.servlet.http.HttpServletRequest;
2320
import net.bytebuddy.agent.builder.AgentBuilder;
2421
import net.bytebuddy.asm.Advice;
2522
import org.springframework.web.servlet.HandlerMapping;
2623

2724
@AutoService(Instrumenter.class)
2825
public final class SpringWebInstrumentation implements Instrumenter {
29-
public static final Map<PreparedStatement, String> preparedStatements = new WeakHashMap<>();
3026

3127
@Override
3228
public AgentBuilder instrument(final AgentBuilder agentBuilder) {

dd-java-agent/instrumentation/trace-annotation/src/main/java/datadog/trace/instrumentation/trace_annotation/TraceAnnotationInstrumentation.java

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,16 +13,12 @@
1313
import io.opentracing.tag.Tags;
1414
import io.opentracing.util.GlobalTracer;
1515
import java.lang.reflect.Method;
16-
import java.sql.PreparedStatement;
1716
import java.util.Collections;
18-
import java.util.Map;
19-
import java.util.WeakHashMap;
2017
import net.bytebuddy.agent.builder.AgentBuilder;
2118
import net.bytebuddy.asm.Advice;
2219

2320
@AutoService(Instrumenter.class)
2421
public final class TraceAnnotationInstrumentation implements Instrumenter {
25-
public static final Map<PreparedStatement, String> preparedStatements = new WeakHashMap<>();
2622

2723
@Override
2824
public AgentBuilder instrument(final AgentBuilder agentBuilder) {

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

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package datadog.trace.agent.tooling;
22

3+
import java.util.Collections;
4+
import java.util.Map;
35
import java.util.WeakHashMap;
46
import net.bytebuddy.matcher.ElementMatcher;
57

@@ -46,7 +48,8 @@ public boolean matches(final ClassLoader target) {
4648
public static class ClassLoaderHasClassMatcher
4749
extends ElementMatcher.Junction.AbstractBase<ClassLoader> {
4850

49-
private final WeakHashMap<ClassLoader, Boolean> cache = new WeakHashMap<>();
51+
private final Map<ClassLoader, Boolean> cache =
52+
Collections.synchronizedMap(new WeakHashMap<ClassLoader, Boolean>());
5053

5154
private final String[] names;
5255

@@ -80,7 +83,8 @@ public boolean matches(final ClassLoader target) {
8083
public static class ClassLoaderHasClassWithFieldMatcher
8184
extends ElementMatcher.Junction.AbstractBase<ClassLoader> {
8285

83-
private final WeakHashMap<ClassLoader, Boolean> cache = new WeakHashMap<>();
86+
private final Map<ClassLoader, Boolean> cache =
87+
Collections.synchronizedMap(new WeakHashMap<ClassLoader, Boolean>());
8488

8589
private final String className;
8690
private final String fieldName;

0 commit comments

Comments
 (0)