This is an automated email from the ASF dual-hosted git repository.

stillalex pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/solr.git


The following commit(s) were added to refs/heads/main by this push:
     new bd09cb5ac59 SOLR-16960 Tests should sometimes run with a Tracer (not 
no-op) (#1972)
bd09cb5ac59 is described below

commit bd09cb5ac59b76a3318fd543d1dcfbaa8fb3977c
Author: Alex D <stilla...@apache.org>
AuthorDate: Mon Oct 2 11:02:49 2023 -0700

    SOLR-16960 Tests should sometimes run with a Tracer (not no-op) (#1972)
---
 .../src/java/org/apache/solr/servlet/ServletUtils.java    |  2 +-
 .../src/java/org/apache/solr/util/tracing/TraceUtils.java | 15 +++++++++++++++
 2 files changed, 16 insertions(+), 1 deletion(-)

diff --git a/solr/core/src/java/org/apache/solr/servlet/ServletUtils.java 
b/solr/core/src/java/org/apache/solr/servlet/ServletUtils.java
index 5297fe44401..2de3b3f2582 100644
--- a/solr/core/src/java/org/apache/solr/servlet/ServletUtils.java
+++ b/solr/core/src/java/org/apache/solr/servlet/ServletUtils.java
@@ -236,7 +236,7 @@ public abstract class ServletUtils {
     try (var scope = context.with(span).makeCurrent()) {
       assert scope != null; // prevent javac warning about scope being unused
       TraceUtils.setSpan(request, span);
-      TraceUtils.ifNotNoop(
+      TraceUtils.ifValidTraceId(
           span, s -> 
MDCLoggingContext.setTracerId(s.getSpanContext().getTraceId()));
       tracedExecution.run();
     } catch (ExceptionWhileTracing e) {
diff --git a/solr/core/src/java/org/apache/solr/util/tracing/TraceUtils.java 
b/solr/core/src/java/org/apache/solr/util/tracing/TraceUtils.java
index 7e9daa37bbc..7edfe8fc55f 100644
--- a/solr/core/src/java/org/apache/solr/util/tracing/TraceUtils.java
+++ b/solr/core/src/java/org/apache/solr/util/tracing/TraceUtils.java
@@ -21,6 +21,7 @@ import io.opentelemetry.api.common.AttributeKey;
 import io.opentelemetry.api.trace.Span;
 import io.opentelemetry.api.trace.SpanBuilder;
 import io.opentelemetry.api.trace.SpanKind;
+import io.opentelemetry.api.trace.TraceId;
 import io.opentelemetry.api.trace.Tracer;
 import io.opentelemetry.context.Context;
 import io.opentelemetry.context.propagation.TextMapPropagator;
@@ -108,6 +109,20 @@ public class TraceUtils {
     }
   }
 
+  /**
+   * Sometimes the tests will use a recoding noop span to verify the complete 
code path so we need
+   * to distinguish this case and only perform a specific operation (like 
updating the MDC context)
+   * only in case the generated trace id is valid
+   *
+   * @param span current span
+   * @param consumer consumer to be called
+   */
+  public static void ifValidTraceId(Span span, Consumer<Span> consumer) {
+    if (TraceId.isValid(span.getSpanContext().getTraceId())) {
+      consumer.accept(span);
+    }
+  }
+
   public static void setSpan(HttpServletRequest req, Span span) {
     req.setAttribute(REQ_ATTR_TRACING_SPAN, span);
   }

Reply via email to