Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -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;
}

Expand Down Expand Up @@ -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);
Expand Down
12 changes: 7 additions & 5 deletions src/main/java/io/lettuce/core/tracing/MicrometerTracing.java
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand Down Expand Up @@ -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);
}

}
Expand Down
14 changes: 8 additions & 6 deletions src/main/java/io/lettuce/core/tracing/RedisObservation.java
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand All @@ -35,11 +37,6 @@ enum RedisObservation implements ObservationDocumentation {
*/
REDIS_COMMAND_OBSERVATION {

@Override
public String getName() {
return "lettuce";
}

@Override
public KeyName[] getLowCardinalityKeyNames() {
return LowCardinalityCommandKeyNames.values();
Expand All @@ -52,6 +49,11 @@ public KeyName[] getHighCardinalityKeyNames() {

};

@Override
public Class<? extends ObservationConvention<? extends Observation.Context>> getDefaultConvention() {
return DefaultLettuceObservationConvention.class;
}

/**
* Enums related to low cardinality key names for Redis commands.
*/
Expand Down