Class TraceUtils

java.lang.Object
org.apache.solr.util.tracing.TraceUtils

public class TraceUtils extends Object
Utilities for distributed tracing.
  • Field Details

    • DEFAULT_SPAN_NAME

      public static final String DEFAULT_SPAN_NAME
      See Also:
    • WRITE_QUERY_RESPONSE_SPAN_NAME

      public static final String WRITE_QUERY_RESPONSE_SPAN_NAME
      See Also:
    • TAG_DB

      public static final io.opentelemetry.api.common.AttributeKey<String> TAG_DB
    • TAG_DB_TYPE

      public static final io.opentelemetry.api.common.AttributeKey<String> TAG_DB_TYPE
    • TAG_USER

      public static final io.opentelemetry.api.common.AttributeKey<String> TAG_USER
    • TAG_HTTP_STATUS

      public static final io.opentelemetry.api.common.AttributeKey<Long> TAG_HTTP_STATUS
    • TAG_HTTP_METHOD

      public static final io.opentelemetry.api.common.AttributeKey<String> TAG_HTTP_METHOD
    • TAG_HTTP_URL

      public static final io.opentelemetry.api.common.AttributeKey<String> TAG_HTTP_URL
    • TAG_HTTP_PARAMS

      public static final io.opentelemetry.api.common.AttributeKey<String> TAG_HTTP_PARAMS
    • TAG_RESPONSE_WRITER

      public static final io.opentelemetry.api.common.AttributeKey<String> TAG_RESPONSE_WRITER
    • TAG_CONTENT_TYPE

      public static final io.opentelemetry.api.common.AttributeKey<String> TAG_CONTENT_TYPE
    • TAG_OPS

      public static final io.opentelemetry.api.common.AttributeKey<List<String>> TAG_OPS
    • TAG_CLASS

      public static final io.opentelemetry.api.common.AttributeKey<String> TAG_CLASS
    • TAG_DB_TYPE_SOLR

      public static final String TAG_DB_TYPE_SOLR
      See Also:
    • DEFAULT_IS_RECORDING

      public static final Predicate<io.opentelemetry.api.trace.Span> DEFAULT_IS_RECORDING
    • IS_RECORDING

      public static Predicate<io.opentelemetry.api.trace.Span> IS_RECORDING
      this should only be changed in the context of testing, otherwise it would risk not recording trace data.
  • Constructor Details

    • TraceUtils

      public TraceUtils()
  • Method Details

    • getGlobalTracer

      public static io.opentelemetry.api.trace.Tracer getGlobalTracer()
    • getTextMapPropagator

      public static io.opentelemetry.context.propagation.TextMapPropagator getTextMapPropagator()
    • setDbInstance

      public static void setDbInstance(SolrQueryRequest req, String coreOrColl)
    • setDbInstance

      public static void setDbInstance(io.opentelemetry.api.trace.Span span, String coreOrColName)
    • setUser

      public static void setUser(io.opentelemetry.api.trace.Span span, String user)
    • setHttpStatus

      public static void setHttpStatus(io.opentelemetry.api.trace.Span span, int httpStatus)
    • ifNotNoop

      public static void ifNotNoop(io.opentelemetry.api.trace.Span span, Consumer<io.opentelemetry.api.trace.Span> consumer)
    • ifValidTraceId

      public static void ifValidTraceId(io.opentelemetry.api.trace.Span span, Consumer<io.opentelemetry.api.trace.Span> consumer)
      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
      Parameters:
      span - current span
      consumer - consumer to be called
    • setSpan

      public static void setSpan(jakarta.servlet.http.HttpServletRequest req, io.opentelemetry.api.trace.Span span)
    • getSpan

      public static io.opentelemetry.api.trace.Span getSpan(jakarta.servlet.http.HttpServletRequest req)
    • setTracer

      public static void setTracer(jakarta.servlet.http.HttpServletRequest req, io.opentelemetry.api.trace.Tracer t)
    • getTracer

      public static io.opentelemetry.api.trace.Tracer getTracer(jakarta.servlet.http.HttpServletRequest req)
    • extractContext

      public static io.opentelemetry.context.Context extractContext(jakarta.servlet.http.HttpServletRequest req)
    • injectTraceContext

      public static void injectTraceContext(org.eclipse.jetty.client.Request req)
    • startHttpRequestSpan

      public static io.opentelemetry.api.trace.Span startHttpRequestSpan(jakarta.servlet.http.HttpServletRequest request, io.opentelemetry.context.Context context)
    • setOperations

      public static void setOperations(SolrQueryRequest req, String clazz, List<String> ops)
    • startCollectionApiCommandSpan

      public static io.opentelemetry.api.trace.Span startCollectionApiCommandSpan(String name, String collection, boolean isAsync)