Merge pull request #203 from DataDog/ark/the_weak_must_die

Use a thread-safe synchronized weak hash map
This commit is contained in:
Andrew Kent 2018-01-25 09:56:38 -08:00 committed by GitHub
commit 28df9fb298
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 11 additions and 12 deletions

View File

@ -14,6 +14,7 @@ import datadog.trace.agent.tooling.DDAdvice;
import datadog.trace.agent.tooling.Instrumenter;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.util.Collections;
import java.util.Map;
import java.util.WeakHashMap;
import lombok.Data;
@ -22,8 +23,10 @@ import net.bytebuddy.asm.Advice;
@AutoService(Instrumenter.class)
public final class ConnectionInstrumentation implements Instrumenter {
public static final Map<Connection, DBInfo> connectionInfo = new WeakHashMap<>();
public static final Map<PreparedStatement, String> preparedStatements = new WeakHashMap<>();
public static final Map<Connection, DBInfo> connectionInfo =
Collections.synchronizedMap(new WeakHashMap<Connection, DBInfo>());
public static final Map<PreparedStatement, String> preparedStatements =
Collections.synchronizedMap(new WeakHashMap<PreparedStatement, String>());
@Override
public AgentBuilder instrument(final AgentBuilder agentBuilder) {

View File

@ -16,9 +16,6 @@ import datadog.trace.agent.tooling.Instrumenter;
import datadog.trace.api.DDTags;
import io.opentracing.Scope;
import io.opentracing.util.GlobalTracer;
import java.sql.PreparedStatement;
import java.util.Map;
import java.util.WeakHashMap;
import javax.servlet.http.HttpServletRequest;
import net.bytebuddy.agent.builder.AgentBuilder;
import net.bytebuddy.asm.Advice;
@ -26,7 +23,6 @@ import org.springframework.web.servlet.HandlerMapping;
@AutoService(Instrumenter.class)
public final class SpringWebInstrumentation implements Instrumenter {
public static final Map<PreparedStatement, String> preparedStatements = new WeakHashMap<>();
@Override
public AgentBuilder instrument(final AgentBuilder agentBuilder) {

View File

@ -13,16 +13,12 @@ import io.opentracing.Span;
import io.opentracing.tag.Tags;
import io.opentracing.util.GlobalTracer;
import java.lang.reflect.Method;
import java.sql.PreparedStatement;
import java.util.Collections;
import java.util.Map;
import java.util.WeakHashMap;
import net.bytebuddy.agent.builder.AgentBuilder;
import net.bytebuddy.asm.Advice;
@AutoService(Instrumenter.class)
public final class TraceAnnotationInstrumentation implements Instrumenter {
public static final Map<PreparedStatement, String> preparedStatements = new WeakHashMap<>();
@Override
public AgentBuilder instrument(final AgentBuilder agentBuilder) {

View File

@ -1,5 +1,7 @@
package datadog.trace.agent.tooling;
import java.util.Collections;
import java.util.Map;
import java.util.WeakHashMap;
import net.bytebuddy.matcher.ElementMatcher;
@ -46,7 +48,8 @@ public class ClassLoaderMatcher {
public static class ClassLoaderHasClassMatcher
extends ElementMatcher.Junction.AbstractBase<ClassLoader> {
private final WeakHashMap<ClassLoader, Boolean> cache = new WeakHashMap<>();
private final Map<ClassLoader, Boolean> cache =
Collections.synchronizedMap(new WeakHashMap<ClassLoader, Boolean>());
private final String[] names;
@ -80,7 +83,8 @@ public class ClassLoaderMatcher {
public static class ClassLoaderHasClassWithFieldMatcher
extends ElementMatcher.Junction.AbstractBase<ClassLoader> {
private final WeakHashMap<ClassLoader, Boolean> cache = new WeakHashMap<>();
private final Map<ClassLoader, Boolean> cache =
Collections.synchronizedMap(new WeakHashMap<ClassLoader, Boolean>());
private final String className;
private final String fieldName;