From e7f0d2db122c4d06e46a516a7883997172cad4db Mon Sep 17 00:00:00 2001 From: Tyler Benson Date: Tue, 7 Apr 2020 12:35:20 -0400 Subject: [PATCH] Alternate fix for #1319 Turns out the issue wasn't with an empty string returning an empty array, but a string with just `,`. ``` jshell> ",".split(",") $1 ==> String[0] { } ``` A non-intuitive edge case in my opinion. --- .../datadog/trace/agent/tooling/OpenTracing32.java | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/dd-java-agent/agent-tooling/src/main/java/datadog/trace/agent/tooling/OpenTracing32.java b/dd-java-agent/agent-tooling/src/main/java/datadog/trace/agent/tooling/OpenTracing32.java index 55b17b5d35..db51e06bcf 100644 --- a/dd-java-agent/agent-tooling/src/main/java/datadog/trace/agent/tooling/OpenTracing32.java +++ b/dd-java-agent/agent-tooling/src/main/java/datadog/trace/agent/tooling/OpenTracing32.java @@ -299,12 +299,15 @@ public final class OpenTracing32 implements TracerAPI { extracted = new HashMap<>(); for (final String key : getter.keys(carrier)) { // extracted header value - String s = getter.get(carrier, key); + String value = getter.get(carrier, key); // in case of multiple values in the header, need to parse - if (s != null && !s.isEmpty()) { - s = s.split(",")[0].trim(); + if (value != null) { + final String[] split = value.split(","); + if (split.length > 0) { + value = split[0].trim(); + } } - extracted.put(key, s); + extracted.put(key, value); } }