From d58a4954e3a56be89eca54250c211c23f31eef03 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=93=D0=B0=D0=BD=D0=B5=D0=B5=D0=B2=20=D0=A0=D0=B0=D1=84?= =?UTF-8?q?=D0=B8=D1=81?= Date: Mon, 23 Jan 2023 18:58:49 +0300 Subject: [PATCH] Do not overwrite client span if incoming request has "uber-trace-id" header --- .../spring/cloud/gateway/TraceRequestHttpHeadersFilter.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/instrument-starters/opentracing-spring-cloud-gateway-starter/src/main/java/io/opentracing/contrib/spring/cloud/gateway/TraceRequestHttpHeadersFilter.java b/instrument-starters/opentracing-spring-cloud-gateway-starter/src/main/java/io/opentracing/contrib/spring/cloud/gateway/TraceRequestHttpHeadersFilter.java index 19e0ebe5..a09fc402 100644 --- a/instrument-starters/opentracing-spring-cloud-gateway-starter/src/main/java/io/opentracing/contrib/spring/cloud/gateway/TraceRequestHttpHeadersFilter.java +++ b/instrument-starters/opentracing-spring-cloud-gateway-starter/src/main/java/io/opentracing/contrib/spring/cloud/gateway/TraceRequestHttpHeadersFilter.java @@ -66,7 +66,9 @@ public HttpHeaders filter(HttpHeaders input, ServerWebExchange exchange) { } catch (Exception ignore) { log.error("TraceRequestHttpHeadersFilter error", ignore); } - headersWithInput.addAll(input); + for (Map.Entry> entry : input.entrySet()) { + headersWithInput.addIfAbsent(entry.getKey(), entry.getValue().get(0)); + } addHeadersWithInput(builder, headersWithInput); return headersWithInput; } @@ -86,7 +88,7 @@ private void addHeadersWithInput(ServerHttpRequest.Builder builder, .entrySet()) { String key = entry.getKey(); List value = entry.getValue(); - headersWithInput.put(key, value); + headersWithInput.putIfAbsent(key, value); } }