Skip to content

Commit af8dacb

Browse files
committed
make experimental option setting for redacted query params similar to other experimental options
1 parent ef369d4 commit af8dacb

File tree

5 files changed

+49
-39
lines changed

5 files changed

+49
-39
lines changed

instrumentation-api-incubator/src/main/java/io/opentelemetry/instrumentation/api/incubator/builder/internal/DefaultHttpClientInstrumenterBuilder.java

+2-7
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
import io.opentelemetry.instrumentation.api.instrumenter.SpanKindExtractor;
2121
import io.opentelemetry.instrumentation.api.instrumenter.SpanNameExtractor;
2222
import io.opentelemetry.instrumentation.api.instrumenter.SpanStatusExtractor;
23-
import io.opentelemetry.instrumentation.api.internal.ExperimentalParameterUtil;
23+
import io.opentelemetry.instrumentation.api.internal.Experimental;
2424
import io.opentelemetry.instrumentation.api.semconv.http.HttpClientAttributesExtractor;
2525
import io.opentelemetry.instrumentation.api.semconv.http.HttpClientAttributesExtractorBuilder;
2626
import io.opentelemetry.instrumentation.api.semconv.http.HttpClientAttributesGetter;
@@ -64,7 +64,6 @@ public final class DefaultHttpClientInstrumenterBuilder<REQUEST, RESPONSE> {
6464
private Function<SpanNameExtractor<? super REQUEST>, ? extends SpanNameExtractor<? super REQUEST>>
6565
spanNameExtractorTransformer = Function.identity();
6666
private boolean emitExperimentalHttpClientMetrics = false;
67-
private boolean redactQueryParameters = true;
6867
private Consumer<InstrumenterBuilder<REQUEST, RESPONSE>> builderCustomizer = b -> {};
6968

7069
private DefaultHttpClientInstrumenterBuilder(
@@ -187,7 +186,7 @@ public DefaultHttpClientInstrumenterBuilder<REQUEST, RESPONSE> setKnownMethods(
187186
@CanIgnoreReturnValue
188187
public DefaultHttpClientInstrumenterBuilder<REQUEST, RESPONSE> setRedactQueryParameters(
189188
boolean redactQueryParameters) {
190-
this.redactQueryParameters = redactQueryParameters;
189+
Experimental.setRedactQueryParameters(httpAttributesExtractorBuilder, redactQueryParameters);
191190
return this;
192191
}
193192

@@ -226,10 +225,6 @@ public Instrumenter<REQUEST, RESPONSE> build() {
226225
SpanNameExtractor<? super REQUEST> spanNameExtractor =
227226
spanNameExtractorTransformer.apply(httpSpanNameExtractorBuilder.build());
228227

229-
if (redactQueryParameters) {
230-
ExperimentalParameterUtil.setRedactQueryParameters(redactQueryParameters);
231-
}
232-
233228
InstrumenterBuilder<REQUEST, RESPONSE> builder =
234229
Instrumenter.<REQUEST, RESPONSE>builder(
235230
openTelemetry, instrumentationName, spanNameExtractor)
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
/*
2+
* Copyright The OpenTelemetry Authors
3+
* SPDX-License-Identifier: Apache-2.0
4+
*/
5+
6+
package io.opentelemetry.instrumentation.api.internal;
7+
8+
import io.opentelemetry.instrumentation.api.semconv.http.HttpClientAttributesExtractorBuilder;
9+
import java.util.function.BiConsumer;
10+
import javax.annotation.Nullable;
11+
12+
/**
13+
* This class is internal and is hence not for public use. Its APIs are unstable and can change at
14+
* any time.
15+
*/
16+
public final class Experimental {
17+
18+
@Nullable
19+
private static volatile BiConsumer<HttpClientAttributesExtractorBuilder<?, ?>, Boolean>
20+
redactHttpClientQueryParameters;
21+
22+
private Experimental() {}
23+
24+
public static void setRedactQueryParameters(
25+
HttpClientAttributesExtractorBuilder<?, ?> builder, boolean redactQueryParameters) {
26+
if (redactHttpClientQueryParameters != null) {
27+
redactHttpClientQueryParameters.accept(builder, redactQueryParameters);
28+
}
29+
}
30+
31+
public static void internalSetRedactHttpClientQueryParameters(
32+
BiConsumer<HttpClientAttributesExtractorBuilder<?, ?>, Boolean>
33+
redactHttpClientQueryParameters) {
34+
Experimental.redactHttpClientQueryParameters = redactHttpClientQueryParameters;
35+
}
36+
}

instrumentation-api/src/main/java/io/opentelemetry/instrumentation/api/internal/ExperimentalParameterUtil.java

-25
This file was deleted.

instrumentation-api/src/main/java/io/opentelemetry/instrumentation/api/semconv/http/HttpClientAttributesExtractorBuilder.java

+6-2
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
import io.opentelemetry.context.Context;
1212
import io.opentelemetry.instrumentation.api.instrumenter.AttributesExtractor;
1313
import io.opentelemetry.instrumentation.api.instrumenter.InstrumenterBuilder;
14-
import io.opentelemetry.instrumentation.api.internal.ExperimentalParameterUtil;
14+
import io.opentelemetry.instrumentation.api.internal.Experimental;
1515
import io.opentelemetry.instrumentation.api.internal.HttpConstants;
1616
import io.opentelemetry.instrumentation.api.semconv.network.internal.AddressAndPortExtractor;
1717
import io.opentelemetry.instrumentation.api.semconv.network.internal.InternalNetworkAttributesExtractor;
@@ -40,6 +40,11 @@ public final class HttpClientAttributesExtractorBuilder<REQUEST, RESPONSE> {
4040
ToIntFunction<Context> resendCountIncrementer = HttpClientRequestResendCount::getAndIncrement;
4141
boolean redactQueryParameters;
4242

43+
static {
44+
Experimental.internalSetRedactHttpClientQueryParameters(
45+
(builder, redact) -> builder.redactQueryParameters = redact);
46+
}
47+
4348
HttpClientAttributesExtractorBuilder(
4449
HttpClientAttributesGetter<REQUEST, RESPONSE> httpAttributesGetter) {
4550
this.httpAttributesGetter = httpAttributesGetter;
@@ -182,7 +187,6 @@ HttpClientAttributesExtractorBuilder<REQUEST, RESPONSE> setResendCountIncremente
182187
* @see InstrumenterBuilder#addAttributesExtractor(AttributesExtractor)
183188
*/
184189
public AttributesExtractor<REQUEST, RESPONSE> build() {
185-
redactQueryParameters = ExperimentalParameterUtil.isRedactQueryParameters();
186190
return new HttpClientAttributesExtractor<>(this);
187191
}
188192

instrumentation-api/src/test/java/io/opentelemetry/instrumentation/api/semconv/http/HttpClientAttributesExtractorTest.java

+5-5
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@
3030
import io.opentelemetry.api.common.AttributesBuilder;
3131
import io.opentelemetry.context.Context;
3232
import io.opentelemetry.instrumentation.api.instrumenter.AttributesExtractor;
33-
import io.opentelemetry.instrumentation.api.internal.ExperimentalParameterUtil;
33+
import io.opentelemetry.instrumentation.api.internal.Experimental;
3434
import io.opentelemetry.instrumentation.api.internal.HttpConstants;
3535
import java.net.ConnectException;
3636
import java.util.HashMap;
@@ -212,10 +212,10 @@ void stripBasicAuthTest(String url, String expectedResult) {
212212
Map<String, String> request = new HashMap<>();
213213
request.put("urlFull", url);
214214

215-
ExperimentalParameterUtil.setRedactQueryParameters(true);
216-
217-
AttributesExtractor<Map<String, String>, Map<String, String>> extractor =
218-
HttpClientAttributesExtractor.create(new TestHttpClientAttributesGetter());
215+
HttpClientAttributesExtractorBuilder<Map<String, String>, Map<String, String>> builder =
216+
HttpClientAttributesExtractor.builder(new TestHttpClientAttributesGetter());
217+
Experimental.setRedactQueryParameters(builder, true);
218+
AttributesExtractor<Map<String, String>, Map<String, String>> extractor = builder.build();
219219

220220
AttributesBuilder attributes = Attributes.builder();
221221
extractor.onStart(attributes, Context.root(), request);

0 commit comments

Comments
 (0)