Skip to content

Commit 489ef33

Browse files
committed
http server builder
1 parent bcd3de5 commit 489ef33

File tree

3 files changed

+70
-37
lines changed

3 files changed

+70
-37
lines changed

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

Lines changed: 51 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -38,12 +38,18 @@ public final class ArmeriaTelemetryBuilder {
3838
ArmeriaTelemetryBuilder::getServerBuilder);
3939
}
4040

41-
@SuppressWarnings({"rawtypes", "unchecked"})
4241
ArmeriaTelemetryBuilder(OpenTelemetry openTelemetry) {
4342
clientBuilder = ArmeriaInstrumenterBuilderFactory.getClientBuilder(openTelemetry);
4443
serverBuilder = ArmeriaInstrumenterBuilderFactory.getServerBuilder(openTelemetry);
4544
}
4645

46+
/**
47+
* Sets the status extractor for both client and server spans.
48+
*
49+
* @deprecated Use {@link #setClientStatusExtractor(Function)} or {@link
50+
* #setServerStatusExtractor(Function)} instead.
51+
*/
52+
@Deprecated
4753
@SuppressWarnings({"unchecked", "rawtypes"})
4854
@CanIgnoreReturnValue
4955
public ArmeriaTelemetryBuilder setStatusExtractor(
@@ -56,10 +62,36 @@ public ArmeriaTelemetryBuilder setStatusExtractor(
5662
return this;
5763
}
5864

65+
/** Sets the status extractor for client spans. */
66+
@CanIgnoreReturnValue
67+
public ArmeriaTelemetryBuilder setClientStatusExtractor(
68+
Function<
69+
SpanStatusExtractor<? super ClientRequestContext, ? super RequestLog>,
70+
? extends SpanStatusExtractor<? super ClientRequestContext, ? super RequestLog>>
71+
statusExtractor) {
72+
clientBuilder.setStatusExtractor(statusExtractor);
73+
return this;
74+
}
75+
76+
/** Sets the status extractor for server spans. */
77+
@CanIgnoreReturnValue
78+
public ArmeriaTelemetryBuilder setServerStatusExtractor(
79+
Function<
80+
SpanStatusExtractor<? super ServiceRequestContext, ? super RequestLog>,
81+
? extends SpanStatusExtractor<? super ServiceRequestContext, ? super RequestLog>>
82+
statusExtractor) {
83+
serverBuilder.setStatusExtractor(statusExtractor);
84+
return this;
85+
}
86+
5987
/**
6088
* Adds an additional {@link AttributesExtractor} to invoke to set attributes to instrumented
6189
* items. The {@link AttributesExtractor} will be executed after all default extractors.
90+
*
91+
* @deprecated Use {@link #addClientAttributeExtractor(AttributesExtractor)} or {@link
92+
* #addServerAttributeExtractor(AttributesExtractor)} instead.
6293
*/
94+
@Deprecated
6395
@CanIgnoreReturnValue
6496
public ArmeriaTelemetryBuilder addAttributeExtractor(
6597
AttributesExtractor<? super RequestContext, ? super RequestLog> attributesExtractor) {
@@ -80,6 +112,18 @@ public ArmeriaTelemetryBuilder addClientAttributeExtractor(
80112
return this;
81113
}
82114

115+
/**
116+
* Adds an extra server-only {@link AttributesExtractor} to invoke to set attributes to
117+
* instrumented items. The {@link AttributesExtractor} will be executed after all default
118+
* extractors.
119+
*/
120+
@CanIgnoreReturnValue
121+
public ArmeriaTelemetryBuilder addServerAttributeExtractor(
122+
AttributesExtractor<? super ServiceRequestContext, ? super RequestLog> attributesExtractor) {
123+
serverBuilder.addAttributesExtractor(attributesExtractor);
124+
return this;
125+
}
126+
83127
/** Sets the {@code peer.service} attribute for http client spans. */
84128
@CanIgnoreReturnValue
85129
public ArmeriaTelemetryBuilder setPeerService(String peerService) {
@@ -162,7 +206,6 @@ public ArmeriaTelemetryBuilder setKnownMethods(Set<String> knownMethods) {
162206
public ArmeriaTelemetryBuilder setEmitExperimentalHttpClientMetrics(
163207
boolean emitExperimentalHttpClientMetrics) {
164208
clientBuilder.setEmitExperimentalHttpClientMetrics(emitExperimentalHttpClientMetrics);
165-
serverBuilder.setEmitExperimentalHttpServerMetrics(emitExperimentalHttpClientMetrics);
166209
return this;
167210
}
168211

@@ -175,32 +218,29 @@ public ArmeriaTelemetryBuilder setEmitExperimentalHttpClientMetrics(
175218
@CanIgnoreReturnValue
176219
public ArmeriaTelemetryBuilder setEmitExperimentalHttpServerMetrics(
177220
boolean emitExperimentalHttpServerMetrics) {
178-
clientBuilder.setEmitExperimentalHttpClientMetrics(emitExperimentalHttpServerMetrics);
179221
serverBuilder.setEmitExperimentalHttpServerMetrics(emitExperimentalHttpServerMetrics);
180222
return this;
181223
}
182224

183225
/** Sets custom client {@link SpanNameExtractor} via transform function. */
184-
@SuppressWarnings({"rawtypes", "unchecked"})
185226
@CanIgnoreReturnValue
186227
public ArmeriaTelemetryBuilder setClientSpanNameExtractor(
187228
Function<
188-
SpanNameExtractor<RequestContext>,
189-
? extends SpanNameExtractor<? super RequestContext>>
229+
SpanNameExtractor<? super ClientRequestContext>,
230+
? extends SpanNameExtractor<? super ClientRequestContext>>
190231
clientSpanNameExtractor) {
191-
clientBuilder.setSpanNameExtractor((Function) clientSpanNameExtractor);
232+
clientBuilder.setSpanNameExtractor(clientSpanNameExtractor);
192233
return this;
193234
}
194235

195236
/** Sets custom server {@link SpanNameExtractor} via transform function. */
196-
@SuppressWarnings({"rawtypes", "unchecked"})
197237
@CanIgnoreReturnValue
198238
public ArmeriaTelemetryBuilder setServerSpanNameExtractor(
199239
Function<
200-
SpanNameExtractor<RequestContext>,
201-
? extends SpanNameExtractor<? super RequestContext>>
240+
SpanNameExtractor<? super ServiceRequestContext>,
241+
? extends SpanNameExtractor<? super ServiceRequestContext>>
202242
serverSpanNameExtractor) {
203-
serverBuilder.setSpanNameExtractor((Function) serverSpanNameExtractor);
243+
serverBuilder.setSpanNameExtractor(serverSpanNameExtractor);
204244
return this;
205245
}
206246

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

Lines changed: 15 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,9 @@
55

66
package io.opentelemetry.instrumentation.armeria.v1_3.internal;
77

8+
import com.linecorp.armeria.client.ClientRequestContext;
89
import com.linecorp.armeria.common.HttpRequest;
910
import com.linecorp.armeria.common.HttpStatus;
10-
import com.linecorp.armeria.common.RequestContext;
1111
import com.linecorp.armeria.common.SessionProtocol;
1212
import com.linecorp.armeria.common.logging.RequestLog;
1313
import io.opentelemetry.instrumentation.api.semconv.http.HttpClientAttributesGetter;
@@ -17,7 +17,7 @@
1717
import javax.annotation.Nullable;
1818

1919
enum ArmeriaHttpClientAttributesGetter
20-
implements HttpClientAttributesGetter<RequestContext, RequestLog> {
20+
implements HttpClientAttributesGetter<ClientRequestContext, RequestLog> {
2121
INSTANCE;
2222

2323
private static final ClassValue<Method> authorityMethodCache =
@@ -34,12 +34,12 @@ protected Method computeValue(Class<?> type) {
3434
};
3535

3636
@Override
37-
public String getHttpRequestMethod(RequestContext ctx) {
37+
public String getHttpRequestMethod(ClientRequestContext ctx) {
3838
return ctx.method().name();
3939
}
4040

4141
@Override
42-
public String getUrlFull(RequestContext ctx) {
42+
public String getUrlFull(ClientRequestContext ctx) {
4343
HttpRequest request = request(ctx);
4444
StringBuilder uri = new StringBuilder();
4545
String scheme = request.scheme();
@@ -61,14 +61,14 @@ public String getUrlFull(RequestContext ctx) {
6161
}
6262

6363
@Override
64-
public List<String> getHttpRequestHeader(RequestContext ctx, String name) {
64+
public List<String> getHttpRequestHeader(ClientRequestContext ctx, String name) {
6565
return request(ctx).headers().getAll(name);
6666
}
6767

6868
@Override
6969
@Nullable
7070
public Integer getHttpResponseStatusCode(
71-
RequestContext ctx, RequestLog requestLog, @Nullable Throwable error) {
71+
ClientRequestContext ctx, RequestLog requestLog, @Nullable Throwable error) {
7272
HttpStatus status = requestLog.responseHeaders().status();
7373
if (!status.equals(HttpStatus.UNKNOWN)) {
7474
return status.code();
@@ -78,25 +78,26 @@ public Integer getHttpResponseStatusCode(
7878

7979
@Override
8080
public List<String> getHttpResponseHeader(
81-
RequestContext ctx, RequestLog requestLog, String name) {
81+
ClientRequestContext ctx, RequestLog requestLog, String name) {
8282
return requestLog.responseHeaders().getAll(name);
8383
}
8484

8585
@Override
86-
public String getNetworkProtocolName(RequestContext ctx, @Nullable RequestLog requestLog) {
86+
public String getNetworkProtocolName(ClientRequestContext ctx, @Nullable RequestLog requestLog) {
8787
return "http";
8888
}
8989

9090
@Override
91-
public String getNetworkProtocolVersion(RequestContext ctx, @Nullable RequestLog requestLog) {
91+
public String getNetworkProtocolVersion(
92+
ClientRequestContext ctx, @Nullable RequestLog requestLog) {
9293
SessionProtocol protocol =
9394
requestLog != null ? requestLog.sessionProtocol() : ctx.sessionProtocol();
9495
return protocol.isMultiplex() ? "2" : "1.1";
9596
}
9697

9798
@Nullable
9899
@Override
99-
public String getServerAddress(RequestContext ctx) {
100+
public String getServerAddress(ClientRequestContext ctx) {
100101
String authority = authority(ctx);
101102
if (authority == null) {
102103
return null;
@@ -107,7 +108,7 @@ public String getServerAddress(RequestContext ctx) {
107108

108109
@Nullable
109110
@Override
110-
public Integer getServerPort(RequestContext ctx) {
111+
public Integer getServerPort(ClientRequestContext ctx) {
111112
String authority = authority(ctx);
112113
if (authority == null) {
113114
return null;
@@ -126,12 +127,12 @@ public Integer getServerPort(RequestContext ctx) {
126127
@Override
127128
@Nullable
128129
public InetSocketAddress getNetworkPeerInetSocketAddress(
129-
RequestContext ctx, @Nullable RequestLog requestLog) {
130+
ClientRequestContext ctx, @Nullable RequestLog requestLog) {
130131
return RequestContextAccess.remoteAddress(ctx);
131132
}
132133

133134
@Nullable
134-
private static String authority(RequestContext ctx) {
135+
private static String authority(ClientRequestContext ctx) {
135136
// newer armeria versions expose authority through DefaultClientRequestContext#authority
136137
// we are using this method as it provides default values based on endpoint
137138
// in older versions armeria wraps the request, and we can get the same default values through
@@ -149,7 +150,7 @@ private static String authority(RequestContext ctx) {
149150
return request.authority();
150151
}
151152

152-
private static HttpRequest request(RequestContext ctx) {
153+
private static HttpRequest request(ClientRequestContext ctx) {
153154
HttpRequest request = ctx.request();
154155
if (request == null) {
155156
throw new IllegalStateException(

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

Lines changed: 4 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,6 @@
1111
import io.opentelemetry.api.OpenTelemetry;
1212
import io.opentelemetry.instrumentation.api.incubator.builder.internal.DefaultHttpClientInstrumenterBuilder;
1313
import io.opentelemetry.instrumentation.api.incubator.builder.internal.DefaultHttpServerInstrumenterBuilder;
14-
import io.opentelemetry.instrumentation.api.semconv.http.HttpClientAttributesGetter;
15-
import io.opentelemetry.instrumentation.api.semconv.http.HttpServerAttributesGetter;
1614

1715
/**
1816
* This class is internal and is hence not for public use. Its APIs are unstable and can change at
@@ -23,23 +21,17 @@ private ArmeriaInstrumenterBuilderFactory() {}
2321

2422
private static final String INSTRUMENTATION_NAME = "io.opentelemetry.armeria-1.3";
2523

26-
@SuppressWarnings({"unchecked", "rawtypes"})
2724
public static DefaultHttpServerInstrumenterBuilder<ServiceRequestContext, RequestLog>
2825
getServerBuilder(OpenTelemetry openTelemetry) {
29-
return new DefaultHttpServerInstrumenterBuilder<ServiceRequestContext, RequestLog>(
30-
INSTRUMENTATION_NAME,
31-
openTelemetry,
32-
(HttpServerAttributesGetter) ArmeriaHttpServerAttributesGetter.INSTANCE)
26+
return new DefaultHttpServerInstrumenterBuilder<>(
27+
INSTRUMENTATION_NAME, openTelemetry, ArmeriaHttpServerAttributesGetter.INSTANCE)
3328
.setHeaderGetter(RequestContextGetter.INSTANCE);
3429
}
3530

36-
@SuppressWarnings({"unchecked", "rawtypes"})
3731
public static DefaultHttpClientInstrumenterBuilder<ClientRequestContext, RequestLog>
3832
getClientBuilder(OpenTelemetry openTelemetry) {
39-
return new DefaultHttpClientInstrumenterBuilder<ClientRequestContext, RequestLog>(
40-
INSTRUMENTATION_NAME,
41-
openTelemetry,
42-
(HttpClientAttributesGetter) ArmeriaHttpClientAttributesGetter.INSTANCE)
33+
return new DefaultHttpClientInstrumenterBuilder<>(
34+
INSTRUMENTATION_NAME, openTelemetry, ArmeriaHttpClientAttributesGetter.INSTANCE)
4335
.setHeaderSetter(ClientRequestContextSetter.INSTANCE);
4436
}
4537
}

0 commit comments

Comments
 (0)