diff --git a/internal-api/src/main/java/datadog/trace/api/ProcessTags.java b/internal-api/src/main/java/datadog/trace/api/ProcessTags.java index f87d02012fd..53bfb8d979a 100644 --- a/internal-api/src/main/java/datadog/trace/api/ProcessTags.java +++ b/internal-api/src/main/java/datadog/trace/api/ProcessTags.java @@ -102,11 +102,13 @@ static void calculate() { private ProcessTags() {} // need to be synchronized on writing. As optimization, it does not need to be sync on read. - public static synchronized void addTag(String key, String value) { + public static void addTag(String key, String value) { if (enabled) { - Lazy.TAGS.put(key, value); - Lazy.serializedForm = null; - Lazy.listForm = null; + synchronized (Lazy.TAGS) { + Lazy.TAGS.put(key, value); + Lazy.serializedForm = null; + Lazy.listForm = null; + } } } @@ -136,15 +138,19 @@ public static UTF8BytesString getTagsForSerialization() { /** Visible for testing. */ static void empty() { - Lazy.TAGS.clear(); - Lazy.serializedForm = null; - Lazy.listForm = null; + synchronized (Lazy.TAGS) { + Lazy.TAGS.clear(); + Lazy.serializedForm = null; + Lazy.listForm = null; + } } /** Visible for testing. */ static void reset() { - empty(); - enabled = Config.get().isExperimentalPropagateProcessTagsEnabled(); - Lazy.TAGS.putAll(Lazy.loadTags()); + synchronized (Lazy.TAGS) { + empty(); + enabled = Config.get().isExperimentalPropagateProcessTagsEnabled(); + Lazy.TAGS.putAll(Lazy.loadTags()); + } } }