From cd8ad435d62a355b3fd729d21f80fd4e8396bbcc Mon Sep 17 00:00:00 2001 From: Alan Zimmer <48699787+alzimmermsft@users.noreply.github.com> Date: Tue, 28 Sep 2021 15:30:09 -0700 Subject: [PATCH] Hide HttpHeaders.toMultiMap API (#24428) --- .../NettyToAzureCoreHttpHeadersWrapper.java | 3 +-- .../src/main/java/com/azure/core/http/HttpHeaders.java | 2 +- .../main/java/com/azure/core/http/rest/RestProxy.java | 10 ++++++++-- 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/sdk/core/azure-core-http-netty/src/main/java/com/azure/core/http/netty/implementation/NettyToAzureCoreHttpHeadersWrapper.java b/sdk/core/azure-core-http-netty/src/main/java/com/azure/core/http/netty/implementation/NettyToAzureCoreHttpHeadersWrapper.java index 788d2671cdfba..b1beed6ed4502 100644 --- a/sdk/core/azure-core-http-netty/src/main/java/com/azure/core/http/netty/implementation/NettyToAzureCoreHttpHeadersWrapper.java +++ b/sdk/core/azure-core-http-netty/src/main/java/com/azure/core/http/netty/implementation/NettyToAzureCoreHttpHeadersWrapper.java @@ -130,8 +130,7 @@ public Map toMap() { return abstractMap; } - @Override - public Map toMultiMap() { + Map toMultiMap() { if (abstractMultiMap == null) { abstractMultiMap = new DeferredCacheImmutableMap<>(LOGGER, new HashMap<>(), nettyHeaders, getAll -> getAll.toArray(new String[0])); diff --git a/sdk/core/azure-core/src/main/java/com/azure/core/http/HttpHeaders.java b/sdk/core/azure-core/src/main/java/com/azure/core/http/HttpHeaders.java index 664f7fa4d5e46..c9f1e0d9fb0e6 100644 --- a/sdk/core/azure-core/src/main/java/com/azure/core/http/HttpHeaders.java +++ b/sdk/core/azure-core/src/main/java/com/azure/core/http/HttpHeaders.java @@ -250,7 +250,7 @@ public Map toMap() { * * @return the headers in a copied and unmodifiable form. */ - public Map toMultiMap() { + Map toMultiMap() { final Map result = new HashMap<>(); for (final HttpHeader header : headers.values()) { result.put(header.getName(), header.getValues()); diff --git a/sdk/core/azure-core/src/main/java/com/azure/core/http/rest/RestProxy.java b/sdk/core/azure-core/src/main/java/com/azure/core/http/rest/RestProxy.java index 9f84a39354407..3fe5d9cfba7c1 100644 --- a/sdk/core/azure-core/src/main/java/com/azure/core/http/rest/RestProxy.java +++ b/sdk/core/azure-core/src/main/java/com/azure/core/http/rest/RestProxy.java @@ -201,10 +201,16 @@ static Flux validateLength(final HttpRequest request) { * @return The updated context containing the span context. */ private Context startTracingSpan(Method method, Context context) { - boolean disableTracing = (boolean) context.getData(Tracer.DISABLE_TRACING_KEY).orElse(false); - if (!TracerProxy.isTracingEnabled() || disableTracing) { + // First check if tracing is enabled. This is an optimized operation, so it is done first. + if (!TracerProxy.isTracingEnabled()) { return context; } + + // Then check if this method disabled tracing. This requires walking a linked list, so do it last. + if ((boolean) context.getData(Tracer.DISABLE_TRACING_KEY).orElse(false)) { + return context; + } + String spanName = interfaceParser.getServiceName() + "." + method.getName(); context = TracerProxy.setSpanName(spanName, context); return TracerProxy.start(spanName, context);