From 423402e62b91049e89530a8b570a6c299bbec5b1 Mon Sep 17 00:00:00 2001 From: Sebastian Sdorra Date: Wed, 4 Nov 2020 09:44:08 +0100 Subject: [PATCH] Add option to disable request tracing --- .../main/java/sonia/scm/net/ahc/BaseHttpRequest.java | 11 +++++++++++ .../sonia/scm/net/ahc/DefaultAdvancedHttpClient.java | 10 ++++++++++ .../scm/net/ahc/DefaultAdvancedHttpClientTest.java | 12 +++++++++++- 3 files changed, 32 insertions(+), 1 deletion(-) diff --git a/scm-core/src/main/java/sonia/scm/net/ahc/BaseHttpRequest.java b/scm-core/src/main/java/sonia/scm/net/ahc/BaseHttpRequest.java index 9c36ae3b1c..302f2ac6fe 100644 --- a/scm-core/src/main/java/sonia/scm/net/ahc/BaseHttpRequest.java +++ b/scm-core/src/main/java/sonia/scm/net/ahc/BaseHttpRequest.java @@ -257,6 +257,17 @@ public abstract class BaseHttpRequest return self(); } + /** + * Disables tracing for the request. + * This should only be done for internal requests. + * + * @return request instance + */ + public T disableTracing() { + this.spanKind = null; + return self(); + } + //~--- get methods ---------------------------------------------------------- /** diff --git a/scm-webapp/src/main/java/sonia/scm/net/ahc/DefaultAdvancedHttpClient.java b/scm-webapp/src/main/java/sonia/scm/net/ahc/DefaultAdvancedHttpClient.java index 3bdfacf50c..ee3bdbb1e5 100644 --- a/scm-webapp/src/main/java/sonia/scm/net/ahc/DefaultAdvancedHttpClient.java +++ b/scm-webapp/src/main/java/sonia/scm/net/ahc/DefaultAdvancedHttpClient.java @@ -190,6 +190,16 @@ public class DefaultAdvancedHttpClient extends AdvancedHttpClient */ @Override protected AdvancedHttpResponse request(BaseHttpRequest request) throws IOException { + String spanKind = request.getSpanKind(); + if (Strings.isNullOrEmpty(spanKind)) { + logger.debug("execute request {} without tracing", request.getUrl()); + return doRequest(request); + } + return doRequestWithTracing(request); + } + + @Nonnull + private DefaultAdvancedHttpResponse doRequestWithTracing(BaseHttpRequest request) throws IOException { try (Span span = tracer.span(request.getSpanKind())) { span.label("url", request.getUrl()); span.label("method", request.getMethod()); diff --git a/scm-webapp/src/test/java/sonia/scm/net/ahc/DefaultAdvancedHttpClientTest.java b/scm-webapp/src/test/java/sonia/scm/net/ahc/DefaultAdvancedHttpClientTest.java index 2b8d5cb381..89004ece27 100644 --- a/scm-webapp/src/test/java/sonia/scm/net/ahc/DefaultAdvancedHttpClientTest.java +++ b/scm-webapp/src/test/java/sonia/scm/net/ahc/DefaultAdvancedHttpClientTest.java @@ -279,7 +279,7 @@ public class DefaultAdvancedHttpClientTest when(connection.getResponseCode()).thenReturn(500); new AdvancedHttpRequest(client, HttpMethod.GET, "https://www.scm-manager.org").request(); - verify(tracer).span("http-request"); + verify(tracer).span("HTTP Request"); verify(span).label("url", "https://www.scm-manager.org"); verify(span).label("method", "GET"); verify(span).label("status", 500); @@ -308,6 +308,16 @@ public class DefaultAdvancedHttpClientTest verify(span).close(); } + @Test + public void shouldNotCreateSpan() throws IOException { + when(connection.getResponseCode()).thenReturn(200); + + new AdvancedHttpRequest(client, HttpMethod.GET, "https://www.scm-manager.org") + .disableTracing().request(); + verify(tracer, never()).span(anyString()); + } + + //~--- set methods ---------------------------------------------------------- /**