Skip to content

Commit a8db58f

Browse files
committed
fix rebase
1 parent 8ece154 commit a8db58f

File tree

39 files changed

+461
-245
lines changed

39 files changed

+461
-245
lines changed

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

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77

88
import com.google.errorprone.annotations.CanIgnoreReturnValue;
99
import io.opentelemetry.api.OpenTelemetry;
10+
import io.opentelemetry.api.common.AttributeKey;
1011
import io.opentelemetry.context.propagation.TextMapSetter;
1112
import io.opentelemetry.instrumentation.api.incubator.config.internal.CommonConfig;
1213
import io.opentelemetry.instrumentation.api.incubator.semconv.http.HttpClientExperimentalMetrics;
@@ -40,6 +41,9 @@
4041
*/
4142
public final class DefaultHttpClientInstrumenterBuilder<REQUEST, RESPONSE> {
4243

44+
// copied from PeerIncubatingAttributes
45+
private static final AttributeKey<String> PEER_SERVICE = AttributeKey.stringKey("peer.service");
46+
4347
private final String instrumentationName;
4448
private final OpenTelemetry openTelemetry;
4549

@@ -83,7 +87,7 @@ public DefaultHttpClientInstrumenterBuilder<REQUEST, RESPONSE> addAttributeExtra
8387
}
8488

8589
@CanIgnoreReturnValue
86-
public DefaultHttpClientTelemetryBuilder<REQUEST, RESPONSE> setStatusExtractor(
90+
public DefaultHttpClientInstrumenterBuilder<REQUEST, RESPONSE> setStatusExtractor(
8791
Function<
8892
SpanStatusExtractor<? super REQUEST, ? super RESPONSE>,
8993
? extends SpanStatusExtractor<? super REQUEST, ? super RESPONSE>>
@@ -174,6 +178,13 @@ public DefaultHttpClientInstrumenterBuilder<REQUEST, RESPONSE> setPeerServiceRes
174178
HttpClientPeerServiceAttributesExtractor.create(attributesGetter, peerServiceResolver));
175179
}
176180

181+
/** Sets the {@code peer.service} attribute for http client spans. */
182+
@CanIgnoreReturnValue
183+
public DefaultHttpClientInstrumenterBuilder<REQUEST, RESPONSE> setPeerService(
184+
String peerService) {
185+
return addAttributeExtractor(AttributesExtractor.constant(PEER_SERVICE, peerService));
186+
}
187+
177188
@CanIgnoreReturnValue
178189
public DefaultHttpClientInstrumenterBuilder<REQUEST, RESPONSE> setBuilderCustomizer(
179190
Consumer<InstrumenterBuilder<REQUEST, RESPONSE>> builderCustomizer) {
@@ -211,6 +222,10 @@ public OpenTelemetry getOpenTelemetry() {
211222
return openTelemetry;
212223
}
213224

225+
public String getInstrumentationName() {
226+
return instrumentationName;
227+
}
228+
214229
@CanIgnoreReturnValue
215230
public DefaultHttpClientInstrumenterBuilder<REQUEST, RESPONSE> configure(CommonConfig config) {
216231
set(config::getKnownHttpRequestMethods, this::setKnownMethods);

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

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@ public final class DefaultHttpServerInstrumenterBuilder<REQUEST, RESPONSE> {
5959
private final HttpServerRouteBuilder<REQUEST> httpServerRouteBuilder;
6060
private final HttpServerAttributesGetter<REQUEST, RESPONSE> attributesGetter;
6161
private boolean emitExperimentalHttpServerMetrics = false;
62+
private Consumer<InstrumenterBuilder<REQUEST, RESPONSE>> builderCustomizer = b -> {};
6263

6364
public DefaultHttpServerInstrumenterBuilder(
6465
String instrumentationName,
@@ -168,6 +169,13 @@ public DefaultHttpServerInstrumenterBuilder<REQUEST, RESPONSE> setSpanNameExtrac
168169
return this;
169170
}
170171

172+
@CanIgnoreReturnValue
173+
public DefaultHttpServerInstrumenterBuilder<REQUEST, RESPONSE> setBuilderCustomizer(
174+
Consumer<InstrumenterBuilder<REQUEST, RESPONSE>> builderCustomizer) {
175+
this.builderCustomizer = builderCustomizer;
176+
return this;
177+
}
178+
171179
public Instrumenter<REQUEST, RESPONSE> build() {
172180
InstrumenterBuilder<REQUEST, RESPONSE> builder = builder();
173181

@@ -177,7 +185,7 @@ public Instrumenter<REQUEST, RESPONSE> build() {
177185
return builder.buildInstrumenter(SpanKindExtractor.alwaysServer());
178186
}
179187

180-
private InstrumenterBuilder<REQUEST, RESPONSE> builder() {
188+
public InstrumenterBuilder<REQUEST, RESPONSE> builder() {
181189
SpanNameExtractor<? super REQUEST> spanNameExtractor =
182190
spanNameExtractorTransformer.apply(httpSpanNameExtractorBuilder.build());
183191

@@ -195,6 +203,7 @@ private InstrumenterBuilder<REQUEST, RESPONSE> builder() {
195203
.addAttributesExtractor(HttpExperimentalAttributesExtractor.create(attributesGetter))
196204
.addOperationMetrics(HttpServerExperimentalMetrics.get());
197205
}
206+
builderCustomizer.accept(builder);
198207

199208
return builder;
200209
}

instrumentation/apache-httpclient/apache-httpclient-4.3/library/src/main/java/io/opentelemetry/instrumentation/apachehttpclient/v4_3/ApacheHttpClientTelemetryBuilder.java

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -20,11 +20,10 @@
2020
public final class ApacheHttpClientTelemetryBuilder {
2121

2222
private static final String INSTRUMENTATION_NAME = "io.opentelemetry.apache-httpclient-4.3";
23-
private final DefaultHttpClientInstrumenterBuilder<ApacheHttpClientRequest, HttpResponse>
24-
clientBuilder;
23+
private final DefaultHttpClientInstrumenterBuilder<ApacheHttpClientRequest, HttpResponse> builder;
2524

2625
ApacheHttpClientTelemetryBuilder(OpenTelemetry openTelemetry) {
27-
clientBuilder =
26+
builder =
2827
new DefaultHttpClientInstrumenterBuilder<>(
2928
INSTRUMENTATION_NAME, openTelemetry, ApacheHttpClientHttpAttributesGetter.INSTANCE);
3029
}
@@ -37,7 +36,7 @@ public final class ApacheHttpClientTelemetryBuilder {
3736
public ApacheHttpClientTelemetryBuilder addAttributeExtractor(
3837
AttributesExtractor<? super ApacheHttpClientRequest, ? super HttpResponse>
3938
attributesExtractor) {
40-
clientBuilder.addAttributeExtractor(attributesExtractor);
39+
builder.addAttributeExtractor(attributesExtractor);
4140
return this;
4241
}
4342

@@ -48,7 +47,7 @@ public ApacheHttpClientTelemetryBuilder addAttributeExtractor(
4847
*/
4948
@CanIgnoreReturnValue
5049
public ApacheHttpClientTelemetryBuilder setCapturedRequestHeaders(List<String> requestHeaders) {
51-
clientBuilder.setCapturedRequestHeaders(requestHeaders);
50+
builder.setCapturedRequestHeaders(requestHeaders);
5251
return this;
5352
}
5453

@@ -59,7 +58,7 @@ public ApacheHttpClientTelemetryBuilder setCapturedRequestHeaders(List<String> r
5958
*/
6059
@CanIgnoreReturnValue
6160
public ApacheHttpClientTelemetryBuilder setCapturedResponseHeaders(List<String> responseHeaders) {
62-
clientBuilder.setCapturedResponseHeaders(responseHeaders);
61+
builder.setCapturedResponseHeaders(responseHeaders);
6362
return this;
6463
}
6564

@@ -78,7 +77,7 @@ public ApacheHttpClientTelemetryBuilder setCapturedResponseHeaders(List<String>
7877
*/
7978
@CanIgnoreReturnValue
8079
public ApacheHttpClientTelemetryBuilder setKnownMethods(Set<String> knownMethods) {
81-
clientBuilder.setKnownMethods(knownMethods);
80+
builder.setKnownMethods(knownMethods);
8281
return this;
8382
}
8483

@@ -91,7 +90,7 @@ public ApacheHttpClientTelemetryBuilder setKnownMethods(Set<String> knownMethods
9190
@CanIgnoreReturnValue
9291
public ApacheHttpClientTelemetryBuilder setEmitExperimentalHttpClientMetrics(
9392
boolean emitExperimentalHttpClientMetrics) {
94-
clientBuilder.setEmitExperimentalHttpClientMetrics(emitExperimentalHttpClientMetrics);
93+
builder.setEmitExperimentalHttpClientMetrics(emitExperimentalHttpClientMetrics);
9594
return this;
9695
}
9796

@@ -102,7 +101,7 @@ public ApacheHttpClientTelemetryBuilder setSpanNameExtractor(
102101
SpanNameExtractor<ApacheHttpClientRequest>,
103102
? extends SpanNameExtractor<? super ApacheHttpClientRequest>>
104103
spanNameExtractorTransformer) {
105-
clientBuilder.setSpanNameExtractor(spanNameExtractorTransformer);
104+
builder.setSpanNameExtractor(spanNameExtractorTransformer);
106105
return this;
107106
}
108107

@@ -112,6 +111,6 @@ public ApacheHttpClientTelemetryBuilder setSpanNameExtractor(
112111
*/
113112
public ApacheHttpClientTelemetry build() {
114113
return new ApacheHttpClientTelemetry(
115-
clientBuilder.build(), clientBuilder.getOpenTelemetry().getPropagators());
114+
builder.build(), builder.getOpenTelemetry().getPropagators());
116115
}
117116
}

instrumentation/apache-httpclient/apache-httpclient-5.2/library/src/main/java/io/opentelemetry/instrumentation/apachehttpclient/v5_2/ApacheHttpClient5TelemetryBuilder.java

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,10 @@ public final class ApacheHttpClient5TelemetryBuilder {
2121

2222
private static final String INSTRUMENTATION_NAME = "io.opentelemetry.apache-httpclient-5.2";
2323
private final DefaultHttpClientInstrumenterBuilder<ApacheHttpClient5Request, HttpResponse>
24-
clientBuilder;
24+
builder;
2525

2626
ApacheHttpClient5TelemetryBuilder(OpenTelemetry openTelemetry) {
27-
clientBuilder =
27+
builder =
2828
new DefaultHttpClientInstrumenterBuilder<>(
2929
INSTRUMENTATION_NAME, openTelemetry, ApacheHttpClient5HttpAttributesGetter.INSTANCE);
3030
}
@@ -37,7 +37,7 @@ public final class ApacheHttpClient5TelemetryBuilder {
3737
public ApacheHttpClient5TelemetryBuilder addAttributeExtractor(
3838
AttributesExtractor<? super ApacheHttpClient5Request, ? super HttpResponse>
3939
attributesExtractor) {
40-
clientBuilder.addAttributeExtractor(attributesExtractor);
40+
builder.addAttributeExtractor(attributesExtractor);
4141
return this;
4242
}
4343

@@ -48,7 +48,7 @@ public ApacheHttpClient5TelemetryBuilder addAttributeExtractor(
4848
*/
4949
@CanIgnoreReturnValue
5050
public ApacheHttpClient5TelemetryBuilder setCapturedRequestHeaders(List<String> requestHeaders) {
51-
clientBuilder.setCapturedRequestHeaders(requestHeaders);
51+
builder.setCapturedRequestHeaders(requestHeaders);
5252
return this;
5353
}
5454

@@ -60,7 +60,7 @@ public ApacheHttpClient5TelemetryBuilder setCapturedRequestHeaders(List<String>
6060
@CanIgnoreReturnValue
6161
public ApacheHttpClient5TelemetryBuilder setCapturedResponseHeaders(
6262
List<String> responseHeaders) {
63-
clientBuilder.setCapturedResponseHeaders(responseHeaders);
63+
builder.setCapturedResponseHeaders(responseHeaders);
6464
return this;
6565
}
6666

@@ -79,7 +79,7 @@ public ApacheHttpClient5TelemetryBuilder setCapturedResponseHeaders(
7979
*/
8080
@CanIgnoreReturnValue
8181
public ApacheHttpClient5TelemetryBuilder setKnownMethods(Set<String> knownMethods) {
82-
clientBuilder.setKnownMethods(knownMethods);
82+
builder.setKnownMethods(knownMethods);
8383
return this;
8484
}
8585

@@ -92,7 +92,7 @@ public ApacheHttpClient5TelemetryBuilder setKnownMethods(Set<String> knownMethod
9292
@CanIgnoreReturnValue
9393
public ApacheHttpClient5TelemetryBuilder setEmitExperimentalHttpClientMetrics(
9494
boolean emitExperimentalHttpClientMetrics) {
95-
clientBuilder.setEmitExperimentalHttpClientMetrics(emitExperimentalHttpClientMetrics);
95+
builder.setEmitExperimentalHttpClientMetrics(emitExperimentalHttpClientMetrics);
9696
return this;
9797
}
9898

@@ -103,7 +103,7 @@ public ApacheHttpClient5TelemetryBuilder setSpanNameExtractor(
103103
SpanNameExtractor<ApacheHttpClient5Request>,
104104
? extends SpanNameExtractor<? super ApacheHttpClient5Request>>
105105
spanNameExtractorTransformer) {
106-
clientBuilder.setSpanNameExtractor(spanNameExtractorTransformer);
106+
builder.setSpanNameExtractor(spanNameExtractorTransformer);
107107
return this;
108108
}
109109

@@ -113,6 +113,6 @@ public ApacheHttpClient5TelemetryBuilder setSpanNameExtractor(
113113
*/
114114
public ApacheHttpClient5Telemetry build() {
115115
return new ApacheHttpClient5Telemetry(
116-
clientBuilder.build(), clientBuilder.getOpenTelemetry().getPropagators());
116+
builder.build(), builder.getOpenTelemetry().getPropagators());
117117
}
118118
}

instrumentation/armeria/armeria-1.3/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/armeria/v1_3/ArmeriaSingletons.java

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,11 @@
88
import com.linecorp.armeria.client.HttpClient;
99
import com.linecorp.armeria.server.HttpService;
1010
import io.opentelemetry.api.GlobalOpenTelemetry;
11-
import io.opentelemetry.instrumentation.api.incubator.builder.internal.DefaultHttpClientInstrumenterBuilder;
12-
import io.opentelemetry.instrumentation.api.incubator.builder.internal.DefaultHttpServerInstrumenterBuilder;
11+
import io.opentelemetry.instrumentation.api.incubator.config.internal.CommonConfig;
1312
import io.opentelemetry.instrumentation.armeria.v1_3.ArmeriaTelemetry;
1413
import io.opentelemetry.instrumentation.armeria.v1_3.ArmeriaTelemetryBuilder;
15-
import io.opentelemetry.javaagent.bootstrap.internal.CommonConfig;
14+
import io.opentelemetry.instrumentation.armeria.v1_3.internal.ArmeriaInstrumenterBuilderUtil;
15+
import io.opentelemetry.javaagent.bootstrap.internal.AgentCommonConfig;
1616
import java.util.function.Function;
1717

1818
// Holds singleton references to decorators to match against during suppression.
@@ -24,8 +24,9 @@ public final class ArmeriaSingletons {
2424

2525
static {
2626
ArmeriaTelemetryBuilder builder = ArmeriaTelemetry.builder(GlobalOpenTelemetry.get());
27-
DefaultHttpClientInstrumenterBuilder.unwrapAndConfigure(CommonConfig.get(), builder);
28-
DefaultHttpServerInstrumenterBuilder.unwrapAndConfigure(CommonConfig.get(), builder);
27+
CommonConfig config = AgentCommonConfig.get();
28+
ArmeriaInstrumenterBuilderUtil.getClientBuilderExtractor().apply(builder).configure(config);
29+
ArmeriaInstrumenterBuilderUtil.getServerBuilderExtractor().apply(builder).configure(config);
2930
ArmeriaTelemetry telemetry = builder.build();
3031

3132
CLIENT_DECORATOR = telemetry.newClientDecorator();

instrumentation/armeria/armeria-1.3/library/src/main/java/io/opentelemetry/instrumentation/armeria/v1_3/ArmeriaTelemetryBuilder.java

Lines changed: 22 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -11,55 +11,37 @@
1111
import com.linecorp.armeria.common.logging.RequestLog;
1212
import com.linecorp.armeria.server.ServiceRequestContext;
1313
import io.opentelemetry.api.OpenTelemetry;
14-
import io.opentelemetry.api.common.AttributeKey;
1514
import io.opentelemetry.instrumentation.api.incubator.builder.internal.DefaultHttpClientInstrumenterBuilder;
1615
import io.opentelemetry.instrumentation.api.incubator.builder.internal.DefaultHttpServerInstrumenterBuilder;
1716
import io.opentelemetry.instrumentation.api.instrumenter.AttributesExtractor;
1817
import io.opentelemetry.instrumentation.api.instrumenter.SpanNameExtractor;
1918
import io.opentelemetry.instrumentation.api.instrumenter.SpanStatusExtractor;
2019
import io.opentelemetry.instrumentation.api.semconv.http.HttpClientAttributesExtractorBuilder;
21-
import io.opentelemetry.instrumentation.api.semconv.http.HttpClientAttributesGetter;
2220
import io.opentelemetry.instrumentation.api.semconv.http.HttpServerAttributesExtractorBuilder;
23-
import io.opentelemetry.instrumentation.api.semconv.http.HttpServerAttributesGetter;
24-
import io.opentelemetry.instrumentation.armeria.v1_3.internal.ArmeriaHttpClientAttributesGetter;
21+
import io.opentelemetry.instrumentation.armeria.v1_3.internal.ArmeriaInstrumenterBuilderFactory;
22+
import io.opentelemetry.instrumentation.armeria.v1_3.internal.ArmeriaInstrumenterBuilderUtil;
2523
import java.util.List;
2624
import java.util.Set;
2725
import java.util.function.Function;
28-
import javax.annotation.Nullable;
2926

3027
public final class ArmeriaTelemetryBuilder {
3128

32-
private static final String INSTRUMENTATION_NAME = "io.opentelemetry.armeria-1.3";
33-
// copied from PeerIncubatingAttributes
34-
private static final AttributeKey<String> PEER_SERVICE = AttributeKey.stringKey("peer.service");
35-
36-
@Nullable private String peerService;
3729
private final DefaultHttpClientInstrumenterBuilder<ClientRequestContext, RequestLog>
3830
clientBuilder;
3931
private final DefaultHttpServerInstrumenterBuilder<ServiceRequestContext, RequestLog>
4032
serverBuilder;
4133

34+
static {
35+
ArmeriaInstrumenterBuilderUtil.setClientBuilderExtractor(
36+
ArmeriaTelemetryBuilder::getClientBuilder);
37+
ArmeriaInstrumenterBuilderUtil.setServerBuilderExtractor(
38+
ArmeriaTelemetryBuilder::getServerBuilder);
39+
}
40+
4241
@SuppressWarnings({"rawtypes", "unchecked"})
4342
ArmeriaTelemetryBuilder(OpenTelemetry openTelemetry) {
44-
clientBuilder =
45-
new DefaultHttpClientInstrumenterBuilder<ClientRequestContext, RequestLog>(
46-
INSTRUMENTATION_NAME,
47-
openTelemetry,
48-
(HttpClientAttributesGetter) ArmeriaHttpClientAttributesGetter.INSTANCE)
49-
.setHeaderSetter(ClientRequestContextSetter.INSTANCE)
50-
.setBuilderCustomizer(
51-
builder -> {
52-
if (peerService != null) {
53-
builder.addAttributesExtractor(
54-
AttributesExtractor.constant(PEER_SERVICE, peerService));
55-
}
56-
});
57-
serverBuilder =
58-
new DefaultHttpServerInstrumenterBuilder<>(
59-
INSTRUMENTATION_NAME,
60-
openTelemetry,
61-
(HttpServerAttributesGetter) ArmeriaHttpServerAttributesGetter.INSTANCE)
62-
.setHeaderGetter(RequestContextGetter.INSTANCE);
43+
clientBuilder = ArmeriaInstrumenterBuilderFactory.getClientBuilder(openTelemetry);
44+
serverBuilder = ArmeriaInstrumenterBuilderFactory.getServerBuilder(openTelemetry);
6345
}
6446

6547
@SuppressWarnings({"unchecked", "rawtypes"})
@@ -101,7 +83,7 @@ public ArmeriaTelemetryBuilder addClientAttributeExtractor(
10183
/** Sets the {@code peer.service} attribute for http client spans. */
10284
@CanIgnoreReturnValue
10385
public ArmeriaTelemetryBuilder setPeerService(String peerService) {
104-
this.peerService = peerService;
86+
clientBuilder.setPeerService(peerService);
10587
return this;
10688
}
10789

@@ -225,4 +207,14 @@ public ArmeriaTelemetryBuilder setServerSpanNameExtractor(
225207
public ArmeriaTelemetry build() {
226208
return new ArmeriaTelemetry(clientBuilder.build(), serverBuilder.build());
227209
}
210+
211+
private DefaultHttpClientInstrumenterBuilder<ClientRequestContext, RequestLog>
212+
getClientBuilder() {
213+
return clientBuilder;
214+
}
215+
216+
private DefaultHttpServerInstrumenterBuilder<ServiceRequestContext, RequestLog>
217+
getServerBuilder() {
218+
return serverBuilder;
219+
}
228220
}

instrumentation/armeria/armeria-1.3/library/src/main/java/io/opentelemetry/instrumentation/armeria/v1_3/internal/ArmeriaHttpClientAttributesGetter.java

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,7 @@
1616
import java.util.List;
1717
import javax.annotation.Nullable;
1818

19-
/**
20-
* This class is internal and is hence not for public use. Its APIs are unstable and can change at
21-
* any time.
22-
*/
23-
public enum ArmeriaHttpClientAttributesGetter
19+
enum ArmeriaHttpClientAttributesGetter
2420
implements HttpClientAttributesGetter<RequestContext, RequestLog> {
2521
INSTANCE;
2622

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
* SPDX-License-Identifier: Apache-2.0
44
*/
55

6-
package io.opentelemetry.instrumentation.armeria.v1_3;
6+
package io.opentelemetry.instrumentation.armeria.v1_3.internal;
77

88
import com.linecorp.armeria.common.HttpRequest;
99
import com.linecorp.armeria.common.HttpStatus;
@@ -12,7 +12,6 @@
1212
import com.linecorp.armeria.common.logging.RequestLog;
1313
import com.linecorp.armeria.server.ServiceRequestContext;
1414
import io.opentelemetry.instrumentation.api.semconv.http.HttpServerAttributesGetter;
15-
import io.opentelemetry.instrumentation.armeria.v1_3.internal.RequestContextAccess;
1615
import java.net.InetSocketAddress;
1716
import java.util.List;
1817
import javax.annotation.Nullable;

0 commit comments

Comments
 (0)