Skip to content

Commit 7903aa7

Browse files
authored
Merge pull request quarkusio#35733 from brunobat/bump-otel-1-29
Bump OTel to 1.29.0
2 parents 8a0d070 + 7148730 commit 7903aa7

File tree

7 files changed

+120
-136
lines changed

7 files changed

+120
-136
lines changed

bom/application/pom.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,8 @@
3131
<opentracing-jdbc.version>0.2.4</opentracing-jdbc.version>
3232
<opentracing-kafka.version>0.1.15</opentracing-kafka.version>
3333
<opentracing-mongo.version>0.1.5</opentracing-mongo.version>
34-
<opentelemetry.version>1.28.0</opentelemetry.version>
35-
<opentelemetry-alpha.version>1.28.0-alpha</opentelemetry-alpha.version>
34+
<opentelemetry.version>1.29.0</opentelemetry.version>
35+
<opentelemetry-alpha.version>1.29.0-alpha</opentelemetry-alpha.version>
3636
<jaeger.version>1.8.1</jaeger.version>
3737
<quarkus-http.version>5.0.3.Final</quarkus-http.version>
3838
<micrometer.version>1.11.1</micrometer.version><!-- keep in sync with hdrhistogram -->

extensions/opentelemetry/deployment/src/test/java/io/quarkus/opentelemetry/deployment/instrumentation/GrpcOpenTelemetryTest.java

Lines changed: 11 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,8 @@
44
import static io.opentelemetry.api.trace.SpanKind.CLIENT;
55
import static io.opentelemetry.api.trace.SpanKind.INTERNAL;
66
import static io.opentelemetry.api.trace.SpanKind.SERVER;
7-
import static io.opentelemetry.semconv.trace.attributes.SemanticAttributes.NET_TRANSPORT;
7+
import static io.opentelemetry.semconv.trace.attributes.SemanticAttributes.NET_HOST_PORT;
8+
import static io.opentelemetry.semconv.trace.attributes.SemanticAttributes.NET_SOCK_HOST_ADDR;
89
import static io.opentelemetry.semconv.trace.attributes.SemanticAttributes.RPC_GRPC_STATUS_CODE;
910
import static io.opentelemetry.semconv.trace.attributes.SemanticAttributes.RPC_METHOD;
1011
import static io.opentelemetry.semconv.trace.attributes.SemanticAttributes.RPC_SERVICE;
@@ -13,6 +14,7 @@
1314
import static io.quarkus.opentelemetry.runtime.config.build.OTelBuildConfig.INSTRUMENTATION_NAME;
1415
import static org.assertj.core.api.Assertions.assertThat;
1516
import static org.junit.jupiter.api.Assertions.assertEquals;
17+
import static org.junit.jupiter.api.Assertions.assertNotNull;
1618
import static org.junit.jupiter.api.Assertions.assertTrue;
1719
import static org.junit.jupiter.api.Assertions.fail;
1820

@@ -122,9 +124,8 @@ void grpc() {
122124
assertEquals("helloworld.Greeter", server.getAttributes().get(RPC_SERVICE));
123125
assertEquals("SayHello", server.getAttributes().get(RPC_METHOD));
124126
assertEquals(Status.Code.OK.value(), server.getAttributes().get(RPC_GRPC_STATUS_CODE));
125-
// assertNotNull(server.getAttributes().get(NET_PEER_IP));
126-
// assertNotNull(server.getAttributes().get(NET_PEER_PORT));
127-
assertEquals("ip_tcp", server.getAttributes().get(NET_TRANSPORT));
127+
assertNotNull(server.getAttributes().get(NET_HOST_PORT));
128+
assertNotNull(server.getAttributes().get(NET_SOCK_HOST_ADDR));
128129

129130
final SpanData internal = getSpanByKindAndParentId(spans, INTERNAL, server.getSpanId());
130131
assertEquals("span.internal", internal.getName());
@@ -161,9 +162,8 @@ void error() {
161162
assertEquals("helloworld.Greeter", server.getAttributes().get(RPC_SERVICE));
162163
assertEquals("SayHello", server.getAttributes().get(RPC_METHOD));
163164
assertEquals(Status.Code.UNKNOWN.value(), server.getAttributes().get(RPC_GRPC_STATUS_CODE));
164-
// assertNotNull(server.getAttributes().get(NET_PEER_IP));
165-
// assertNotNull(server.getAttributes().get(NET_PEER_PORT));
166-
assertEquals("ip_tcp", server.getAttributes().get(NET_TRANSPORT));
165+
assertNotNull(server.getAttributes().get(NET_HOST_PORT));
166+
assertNotNull(server.getAttributes().get(NET_SOCK_HOST_ADDR));
167167
assertEquals(Status.Code.UNKNOWN.value(), server.getAttributes().get(RPC_GRPC_STATUS_CODE));
168168

169169
assertEquals(server.getTraceId(), client.getTraceId());
@@ -213,9 +213,8 @@ void streaming() {
213213
assertEquals("streaming.Streaming", server.getAttributes().get(RPC_SERVICE));
214214
assertEquals("Pipe", server.getAttributes().get(RPC_METHOD));
215215
assertEquals(Status.Code.OK.value(), server.getAttributes().get(RPC_GRPC_STATUS_CODE));
216-
// assertNotNull(server.getAttributes().get(NET_PEER_IP));
217-
// assertNotNull(server.getAttributes().get(NET_PEER_PORT));
218-
assertEquals("ip_tcp", server.getAttributes().get(NET_TRANSPORT));
216+
assertNotNull(server.getAttributes().get(NET_HOST_PORT));
217+
assertNotNull(server.getAttributes().get(NET_SOCK_HOST_ADDR));
219218
assertEquals("true", server.getAttributes().get(stringKey("grpc.service.propagated")));
220219

221220
assertEquals(server.getTraceId(), client.getTraceId());
@@ -250,9 +249,8 @@ void streamingBlocking() {
250249
assertEquals("streaming.Streaming", server.getAttributes().get(RPC_SERVICE));
251250
assertEquals("PipeBlocking", server.getAttributes().get(RPC_METHOD));
252251
assertEquals(Status.Code.OK.value(), server.getAttributes().get(RPC_GRPC_STATUS_CODE));
253-
// assertNotNull(server.getAttributes().get(NET_PEER_IP));//now shows up on net.sock.peer.addr. Not available on attributes yet. FIXME
254-
// assertNotNull(server.getAttributes().get(NET_PEER_PORT)); // same for port. FIXME
255-
assertEquals("ip_tcp", server.getAttributes().get(NET_TRANSPORT));
252+
assertNotNull(server.getAttributes().get(NET_HOST_PORT));
253+
assertNotNull(server.getAttributes().get(NET_SOCK_HOST_ADDR));
256254
assertEquals("true", server.getAttributes().get(stringKey("grpc.service.propagated.blocking")));
257255

258256
assertEquals(server.getTraceId(), client.getTraceId());

extensions/opentelemetry/runtime/src/main/java/io/quarkus/opentelemetry/runtime/graal/Substitutions.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010

1111
import io.opentelemetry.api.events.EventEmitterProvider;
1212
import io.opentelemetry.api.metrics.MeterProvider;
13+
import io.opentelemetry.sdk.autoconfigure.internal.SpiHelper;
1314
import io.opentelemetry.sdk.autoconfigure.spi.ConfigProperties;
1415
import io.opentelemetry.sdk.logs.SdkLoggerProviderBuilder;
1516
import io.opentelemetry.sdk.logs.export.LogRecordExporter;
@@ -24,7 +25,7 @@ static final class Target_MeterProviderConfiguration {
2425
@Substitute
2526
static List<MetricReader> configureMetricReaders(
2627
ConfigProperties config,
27-
ClassLoader serviceClassLoader,
28+
SpiHelper spiHelper,
2829
BiFunction<? super MetricExporter, ConfigProperties, ? extends MetricExporter> metricExporterCustomizer,
2930
List<Closeable> closeables) {
3031
// OTel metrics not supported and there is no need to call
@@ -40,7 +41,7 @@ static final class Target_LoggerProviderConfiguration {
4041
static void configureLoggerProvider(
4142
SdkLoggerProviderBuilder loggerProviderBuilder,
4243
ConfigProperties config,
43-
ClassLoader serviceClassLoader,
44+
SpiHelper spiHelper,
4445
MeterProvider meterProvider,
4546
BiFunction<? super LogRecordExporter, ConfigProperties, ? extends LogRecordExporter> logRecordExporterCustomizer,
4647
List<Closeable> closeables) {

extensions/opentelemetry/runtime/src/main/java/io/quarkus/opentelemetry/runtime/tracing/intrumentation/grpc/GrpcTracingServerInterceptor.java

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -22,10 +22,12 @@
2222
import io.opentelemetry.context.propagation.TextMapGetter;
2323
import io.opentelemetry.instrumentation.api.instrumenter.Instrumenter;
2424
import io.opentelemetry.instrumentation.api.instrumenter.InstrumenterBuilder;
25-
import io.opentelemetry.instrumentation.api.instrumenter.net.NetServerAttributesExtractor;
26-
import io.opentelemetry.instrumentation.api.instrumenter.net.NetServerAttributesGetter;
25+
import io.opentelemetry.instrumentation.api.instrumenter.network.ClientAttributesExtractor;
26+
import io.opentelemetry.instrumentation.api.instrumenter.network.ClientAttributesGetter;
27+
import io.opentelemetry.instrumentation.api.instrumenter.network.NetworkAttributesGetter;
28+
import io.opentelemetry.instrumentation.api.instrumenter.network.ServerAttributesExtractor;
29+
import io.opentelemetry.instrumentation.api.instrumenter.network.ServerAttributesGetter;
2730
import io.opentelemetry.instrumentation.api.instrumenter.rpc.RpcServerAttributesExtractor;
28-
import io.opentelemetry.semconv.trace.attributes.SemanticAttributes;
2931
import io.quarkus.grpc.GlobalInterceptor;
3032

3133
@Singleton
@@ -39,8 +41,12 @@ public GrpcTracingServerInterceptor(final OpenTelemetry openTelemetry) {
3941
INSTRUMENTATION_NAME,
4042
new GrpcSpanNameExtractor());
4143

44+
GrpcServerNetworkAttributesGetter getter = new GrpcServerNetworkAttributesGetter();
45+
4246
builder.addAttributesExtractor(RpcServerAttributesExtractor.create(GrpcAttributesGetter.INSTANCE))
43-
.addAttributesExtractor(NetServerAttributesExtractor.create(new GrpcServerNetServerAttributesGetter()))
47+
.addAttributesExtractor(
48+
ServerAttributesExtractor.createForServerSide(getter))
49+
.addAttributesExtractor(ClientAttributesExtractor.create(getter))
4450
.addAttributesExtractor(new GrpcStatusCodeExtractor())
4551
.setSpanStatusExtractor(new GrpcSpanStatusExtractor());
4652

@@ -65,11 +71,9 @@ public <ReqT, RespT> ServerCall.Listener<ReqT> interceptCall(
6571
return next.startCall(call, headers);
6672
}
6773

68-
private static class GrpcServerNetServerAttributesGetter implements NetServerAttributesGetter<GrpcRequest, Status> {
69-
@Override
70-
public String getTransport(final GrpcRequest grpcRequest) {
71-
return SemanticAttributes.NetTransportValues.IP_TCP;
72-
}
74+
static class GrpcServerNetworkAttributesGetter implements NetworkAttributesGetter<GrpcRequest, Status>,
75+
ServerAttributesGetter<GrpcRequest, Status>,
76+
ClientAttributesGetter<GrpcRequest, Status> {
7377

7478
@Override
7579
public String getServerAddress(GrpcRequest grpcRequest) {

extensions/opentelemetry/runtime/src/main/java/io/quarkus/opentelemetry/runtime/tracing/intrumentation/restclient/OpenTelemetryClientFilter.java

Lines changed: 23 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@
2626
import io.opentelemetry.instrumentation.api.instrumenter.http.HttpClientAttributesGetter;
2727
import io.opentelemetry.instrumentation.api.instrumenter.http.HttpSpanNameExtractor;
2828
import io.opentelemetry.instrumentation.api.instrumenter.http.HttpSpanStatusExtractor;
29-
import io.opentelemetry.instrumentation.api.instrumenter.net.NetClientAttributesGetter;
3029
import io.opentelemetry.semconv.trace.attributes.SemanticAttributes;
3130
import io.quarkus.arc.Unremovable;
3231
import io.quarkus.opentelemetry.runtime.QuarkusContextStorage;
@@ -62,7 +61,6 @@ public OpenTelemetryClientFilter() {
6261
@Inject
6362
public OpenTelemetryClientFilter(final OpenTelemetry openTelemetry) {
6463
ClientAttributesExtractor clientAttributesExtractor = new ClientAttributesExtractor();
65-
ClientNetAttributesGetter clientNetAttributesExtractor = new ClientNetAttributesGetter();
6664

6765
InstrumenterBuilder<ClientRequestContext, ClientResponseContext> builder = Instrumenter.builder(
6866
openTelemetry,
@@ -72,7 +70,7 @@ public OpenTelemetryClientFilter(final OpenTelemetry openTelemetry) {
7270
this.instrumenter = builder
7371
.setSpanStatusExtractor(HttpSpanStatusExtractor.create(clientAttributesExtractor))
7472
.addAttributesExtractor(HttpClientAttributesExtractor.create(
75-
clientAttributesExtractor, clientNetAttributesExtractor))
73+
clientAttributesExtractor))
7674
.buildClientInstrumenter(new ClientRequestContextTextMapSetter());
7775
}
7876

@@ -155,32 +153,6 @@ public String getUrlFull(final ClientRequestContext request) {
155153
return uri.toString();
156154
}
157155

158-
@Override
159-
public String getHttpRequestMethod(final ClientRequestContext request) {
160-
return request.getMethod();
161-
}
162-
163-
@Override
164-
public List<String> getHttpRequestHeader(final ClientRequestContext request, final String name) {
165-
return request.getStringHeaders().getOrDefault(name, emptyList());
166-
}
167-
168-
@Override
169-
public Integer getHttpResponseStatusCode(ClientRequestContext clientRequestContext,
170-
ClientResponseContext clientResponseContext, Throwable error) {
171-
return clientResponseContext.getStatus();
172-
}
173-
174-
@Override
175-
public List<String> getHttpResponseHeader(final ClientRequestContext request, final ClientResponseContext response,
176-
final String name) {
177-
return response.getHeaders().getOrDefault(name, emptyList());
178-
}
179-
}
180-
181-
private static class ClientNetAttributesGetter
182-
implements NetClientAttributesGetter<ClientRequestContext, ClientResponseContext> {
183-
184156
@Override
185157
public String getTransport(ClientRequestContext clientRequestContext, ClientResponseContext clientResponseContext) {
186158
return SemanticAttributes.NetTransportValues.IP_TCP;
@@ -207,5 +179,27 @@ public String getNetworkProtocolVersion(ClientRequestContext clientRequestContex
207179
ClientResponseContext clientResponseContext) {
208180
return null;
209181
}
182+
183+
@Override
184+
public String getHttpRequestMethod(final ClientRequestContext request) {
185+
return request.getMethod();
186+
}
187+
188+
@Override
189+
public List<String> getHttpRequestHeader(final ClientRequestContext request, final String name) {
190+
return request.getStringHeaders().getOrDefault(name, emptyList());
191+
}
192+
193+
@Override
194+
public Integer getHttpResponseStatusCode(ClientRequestContext clientRequestContext,
195+
ClientResponseContext clientResponseContext, Throwable error) {
196+
return clientResponseContext.getStatus();
197+
}
198+
199+
@Override
200+
public List<String> getHttpResponseHeader(final ClientRequestContext request, final ClientResponseContext response,
201+
final String name) {
202+
return response.getHeaders().getOrDefault(name, emptyList());
203+
}
210204
}
211205
}

0 commit comments

Comments
 (0)