From f3d50931e6577c74dd2cc62d812930938527e502 Mon Sep 17 00:00:00 2001 From: Douglas Q Hawkins Date: Wed, 25 Mar 2026 14:39:20 -0400 Subject: [PATCH 1/2] Caching host entry to reduce allocation --- .../tagprocessor/RemoteHostnameAdder.java | 22 +++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/dd-trace-core/src/main/java/datadog/trace/core/tagprocessor/RemoteHostnameAdder.java b/dd-trace-core/src/main/java/datadog/trace/core/tagprocessor/RemoteHostnameAdder.java index 7bd45cd2c92..9f134c5707f 100644 --- a/dd-trace-core/src/main/java/datadog/trace/core/tagprocessor/RemoteHostnameAdder.java +++ b/dd-trace-core/src/main/java/datadog/trace/core/tagprocessor/RemoteHostnameAdder.java @@ -9,6 +9,8 @@ public final class RemoteHostnameAdder extends TagsPostProcessor { private final Supplier hostnameSupplier; + + private TagMap.Entry cachedHostEntry = null; public RemoteHostnameAdder(Supplier hostnameSupplier) { this.hostnameSupplier = hostnameSupplier; @@ -17,8 +19,24 @@ public RemoteHostnameAdder(Supplier hostnameSupplier) { @Override public void processTags( TagMap unsafeTags, DDSpanContext spanContext, List spanLinks) { - if (spanContext.getSpanId() == spanContext.getRootSpanId()) { - unsafeTags.put(DDTags.TRACER_HOST, hostnameSupplier.get()); + if (spanContext.getSpanId() != spanContext.getRootSpanId()) { + return; } + + String hostname = hostnameSupplier.get(); + if (hostname == null) { + return; + } + + TagMap.Entry cachedHostEntry = this.cachedHostEntry; + + if (cachedHostEntry != null && cachedHostEntry.objectValue().equals(hostname)) { + unsafeTags.set(cachedHostEntry); + return; + } + + TagMap.Entry newEntry = TagMap.Entry.create(DDTags.TRACER_HOST, hostname); + unsafeTags.set(newEntry); + this.cachedHostEntry = newEntry; } } From 29f52054ce33361f0b7af280e9c937512600f043 Mon Sep 17 00:00:00 2001 From: Douglas Q Hawkins Date: Wed, 25 Mar 2026 14:40:02 -0400 Subject: [PATCH 2/2] spotless --- .../trace/core/tagprocessor/RemoteHostnameAdder.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/dd-trace-core/src/main/java/datadog/trace/core/tagprocessor/RemoteHostnameAdder.java b/dd-trace-core/src/main/java/datadog/trace/core/tagprocessor/RemoteHostnameAdder.java index 9f134c5707f..80bb95b394c 100644 --- a/dd-trace-core/src/main/java/datadog/trace/core/tagprocessor/RemoteHostnameAdder.java +++ b/dd-trace-core/src/main/java/datadog/trace/core/tagprocessor/RemoteHostnameAdder.java @@ -9,7 +9,7 @@ public final class RemoteHostnameAdder extends TagsPostProcessor { private final Supplier hostnameSupplier; - + private TagMap.Entry cachedHostEntry = null; public RemoteHostnameAdder(Supplier hostnameSupplier) { @@ -22,19 +22,19 @@ public void processTags( if (spanContext.getSpanId() != spanContext.getRootSpanId()) { return; } - + String hostname = hostnameSupplier.get(); if (hostname == null) { return; } - + TagMap.Entry cachedHostEntry = this.cachedHostEntry; - + if (cachedHostEntry != null && cachedHostEntry.objectValue().equals(hostname)) { unsafeTags.set(cachedHostEntry); return; } - + TagMap.Entry newEntry = TagMap.Entry.create(DDTags.TRACER_HOST, hostname); unsafeTags.set(newEntry); this.cachedHostEntry = newEntry;