Skip to content

Commit 60ac4bf

Browse files
Copilottrask
andcommitted
Add instrumentationEnabled configuration option and improve shouldStart implementation
Co-authored-by: trask <[email protected]>
1 parent 540ac84 commit 60ac4bf

File tree

3 files changed

+22
-8
lines changed

3 files changed

+22
-8
lines changed

instrumentation/lettuce/lettuce-5.1/library/src/main/java/io/opentelemetry/instrumentation/lettuce/v5_1/LettuceTelemetry.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ public static LettuceTelemetryBuilder builder(OpenTelemetry openTelemetry) {
4040
LettuceTelemetry(
4141
OpenTelemetry openTelemetry,
4242
boolean statementSanitizationEnabled,
43+
boolean instrumentationEnabled,
4344
OperationListener metrics) {
4445
this.metrics = metrics;
4546
TracerBuilder tracerBuilder = openTelemetry.tracerBuilder(INSTRUMENTATION_NAME);
@@ -50,9 +51,11 @@ public static LettuceTelemetryBuilder builder(OpenTelemetry openTelemetry) {
5051
tracer = tracerBuilder.build();
5152
sanitizer = RedisCommandSanitizer.create(statementSanitizationEnabled);
5253

53-
// Create instrumenter for shouldStart checks
54+
// Create minimal instrumenter only for shouldStart checks
55+
// The actual span creation is handled by the existing SpanBuilder mechanism
5456
instrumenter = Instrumenter.<Object, Void>builder(openTelemetry, INSTRUMENTATION_NAME, req -> "redis")
55-
.buildInstrumenter(SpanKindExtractor.alwaysInternal());
57+
.setEnabled(instrumentationEnabled)
58+
.buildInstrumenter();
5659
}
5760

5861
/**

instrumentation/lettuce/lettuce-5.1/library/src/main/java/io/opentelemetry/instrumentation/lettuce/v5_1/LettuceTelemetryBuilder.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ public final class LettuceTelemetryBuilder {
1717
private final OpenTelemetry openTelemetry;
1818

1919
private boolean statementSanitizationEnabled = true;
20+
private boolean instrumentationEnabled = true;
2021

2122
LettuceTelemetryBuilder(OpenTelemetry openTelemetry) {
2223
this.openTelemetry = openTelemetry;
@@ -34,6 +35,16 @@ public LettuceTelemetryBuilder setStatementSanitizationEnabled(
3435
return this;
3536
}
3637

38+
/**
39+
* Sets whether instrumentation should be enabled. If set to {@code false}, no spans will be
40+
* created by the constructed {@link LettuceTelemetry}. Enabled by default.
41+
*/
42+
@CanIgnoreReturnValue
43+
public LettuceTelemetryBuilder setInstrumentationEnabled(boolean instrumentationEnabled) {
44+
this.instrumentationEnabled = instrumentationEnabled;
45+
return this;
46+
}
47+
3748
/**
3849
* Returns a new {@link LettuceTelemetry} with the settings of this {@link
3950
* LettuceTelemetryBuilder}.
@@ -42,6 +53,7 @@ public LettuceTelemetry build() {
4253
return new LettuceTelemetry(
4354
openTelemetry,
4455
statementSanitizationEnabled,
56+
instrumentationEnabled,
4557
DbClientMetrics.get().create(openTelemetry.getMeterProvider().get(INSTRUMENTATION_NAME)));
4658
}
4759
}

instrumentation/lettuce/lettuce-5.1/library/src/test/java/io/opentelemetry/instrumentation/lettuce/v5_1/LettuceShouldStartTest.java

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ static void cleanUp() {
5252

5353
@Test
5454
void shouldNotCreateSpansWhenInstrumentationDisabled() {
55-
// Create OpenTelemetry instance with instrumentation disabled
55+
// Create OpenTelemetry instance
5656
InMemorySpanExporter spanExporter = InMemorySpanExporter.create();
5757
SdkTracerProvider tracerProvider =
5858
SdkTracerProvider.builder()
@@ -63,9 +63,9 @@ void shouldNotCreateSpansWhenInstrumentationDisabled() {
6363
.setTracerProvider(tracerProvider)
6464
.build();
6565

66-
// Create LettuceTelemetry with disabled instrumenter (this is a simplified test)
67-
// In a real scenario, instrumentation would be disabled via configuration
66+
// Create LettuceTelemetry with instrumentation disabled
6867
LettuceTelemetry lettuceTelemetry = LettuceTelemetry.builder(openTelemetry)
68+
.setInstrumentationEnabled(false)
6969
.build();
7070

7171
redisClient = RedisClient.create(
@@ -82,9 +82,8 @@ void shouldNotCreateSpansWhenInstrumentationDisabled() {
8282

8383
assertThat(value).isEqualTo("test-value");
8484

85-
// For this basic test, we just verify that operations work
86-
// A more sophisticated test would involve actually disabling the instrumenter
87-
// via configuration and verifying no spans are created
85+
// Verify no spans were created due to disabled instrumentation
86+
assertThat(spanExporter.getFinishedSpanItems()).isEmpty();
8887
}
8988

9089
@Test

0 commit comments

Comments
 (0)