diff --git a/src/main/java/io/lettuce/core/tracing/DefaultLettuceObservationConvention.java b/src/main/java/io/lettuce/core/tracing/DefaultLettuceObservationConvention.java index f75293d934..3b159df313 100644 --- a/src/main/java/io/lettuce/core/tracing/DefaultLettuceObservationConvention.java +++ b/src/main/java/io/lettuce/core/tracing/DefaultLettuceObservationConvention.java @@ -11,17 +11,17 @@ /** * Default {@link LettuceObservationConvention} implementation. * - * @author Mark Paluch + * @author Mark Paluch, Tommy Luk * @since 6.3 */ -public final class DefaultLettuceObservationConvention implements LettuceObservationConvention { +public class DefaultLettuceObservationConvention implements LettuceObservationConvention { private final boolean includeCommandArgsInSpanTags; /** * */ - DefaultLettuceObservationConvention(boolean includeCommandArgsInSpanTags) { + public DefaultLettuceObservationConvention(boolean includeCommandArgsInSpanTags) { this.includeCommandArgsInSpanTags = includeCommandArgsInSpanTags; } @@ -69,6 +69,11 @@ public KeyValues getHighCardinalityKeyValues(LettuceObservationContext context) return KeyValues.empty(); } + @Override + public String getName() { + return "lettuce"; + } + @Override public String getContextualName(LettuceObservationContext context) { return context.getRequiredCommand().getType().toString().toLowerCase(Locale.ROOT); diff --git a/src/main/java/io/lettuce/core/tracing/MicrometerTracing.java b/src/main/java/io/lettuce/core/tracing/MicrometerTracing.java index 3c7252d5e5..dbd8ba0077 100644 --- a/src/main/java/io/lettuce/core/tracing/MicrometerTracing.java +++ b/src/main/java/io/lettuce/core/tracing/MicrometerTracing.java @@ -24,7 +24,7 @@ * {@code includeCommandArgsInSpanTags}. You should carefully consider the impact of this setting as all command arguments will * be captured in traces including these that may contain sensitive details. * - * @author Mark Paluch + * @author Mark Paluch, Tommy Luk * @since 6.3 */ public class MicrometerTracing implements Tracing { @@ -139,16 +139,18 @@ public Span nextSpan(TraceContext traceContext) { return nextSpan(); } - return new MicrometerSpan(serviceName, - context -> createObservation(context).parentObservation(micrometerTraceContext.getObservation())); + return new MicrometerSpan(serviceName, context -> { + context.setParentObservation(micrometerTraceContext.getObservation()); + return createObservation(context); + }); } return nextSpan(); } private Observation createObservation(LettuceObservationContext context) { - return REDIS_COMMAND_OBSERVATION.observation(observationRegistry, () -> context) - .observationConvention(observationConvention); + return REDIS_COMMAND_OBSERVATION.observation(observationConvention, new DefaultLettuceObservationConvention(false), + () -> context, observationRegistry); } } diff --git a/src/main/java/io/lettuce/core/tracing/RedisObservation.java b/src/main/java/io/lettuce/core/tracing/RedisObservation.java index 52f7ab7a6f..5179761e95 100644 --- a/src/main/java/io/lettuce/core/tracing/RedisObservation.java +++ b/src/main/java/io/lettuce/core/tracing/RedisObservation.java @@ -20,12 +20,14 @@ package io.lettuce.core.tracing; import io.micrometer.common.docs.KeyName; +import io.micrometer.observation.Observation; +import io.micrometer.observation.ObservationConvention; import io.micrometer.observation.docs.ObservationDocumentation; /** * A Redis-based {@link io.micrometer.observation.Observation}. * - * @author Mark Paluch + * @author Mark Paluch, Tommy Luk * @since 6.3 */ enum RedisObservation implements ObservationDocumentation { @@ -35,11 +37,6 @@ enum RedisObservation implements ObservationDocumentation { */ REDIS_COMMAND_OBSERVATION { - @Override - public String getName() { - return "lettuce"; - } - @Override public KeyName[] getLowCardinalityKeyNames() { return LowCardinalityCommandKeyNames.values(); @@ -52,6 +49,11 @@ public KeyName[] getHighCardinalityKeyNames() { }; + @Override + public Class> getDefaultConvention() { + return DefaultLettuceObservationConvention.class; + } + /** * Enums related to low cardinality key names for Redis commands. */