Skip to content

Commit 839ed9f

Browse files
author
Andrew Kent
committed
Use a thread-safe synchronized weak hash map.
1 parent 53ceb74 commit 839ed9f

4 files changed

Lines changed: 16 additions & 6 deletions

File tree

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: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
import io.opentracing.Scope;
1818
import io.opentracing.util.GlobalTracer;
1919
import java.sql.PreparedStatement;
20+
import java.util.Collections;
2021
import java.util.Map;
2122
import java.util.WeakHashMap;
2223
import javax.servlet.http.HttpServletRequest;
@@ -26,7 +27,8 @@
2627

2728
@AutoService(Instrumenter.class)
2829
public final class SpringWebInstrumentation implements Instrumenter {
29-
public static final Map<PreparedStatement, String> preparedStatements = new WeakHashMap<>();
30+
public static final Map<PreparedStatement, String> preparedStatements =
31+
Collections.synchronizedMap(new WeakHashMap<PreparedStatement, String>());
3032

3133
@Override
3234
public AgentBuilder instrument(final AgentBuilder agentBuilder) {

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,8 @@
2222

2323
@AutoService(Instrumenter.class)
2424
public final class TraceAnnotationInstrumentation implements Instrumenter {
25-
public static final Map<PreparedStatement, String> preparedStatements = new WeakHashMap<>();
25+
public static final Map<PreparedStatement, String> preparedStatements =
26+
Collections.synchronizedMap(new WeakHashMap<PreparedStatement, String>());
2627

2728
@Override
2829
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)