Skip to content

Commit 2c14c29

Browse files
authored
Merge pull request #2 from cyrille-leclerc/1874-transfer-listener
Iterate on OtelTransferListener
2 parents 25951df + 41caafc commit 2c14c29

File tree

4 files changed

+21
-15
lines changed

4 files changed

+21
-15
lines changed

maven-extension/README.md

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -61,14 +61,15 @@ Without this setting, the traces won't be exported and the OpenTelemetry Maven E
6161

6262
The Maven OpenTelemetry Extension supports a subset of the [OpenTelemetry autoconfiguration environment variables and JVM system properties](https://github.com/open-telemetry/opentelemetry-java/tree/main/sdk-extensions/autoconfigure).
6363

64-
| System property <br /> Environment variable | Default value | Description |
65-
|--------------------------------------------------------------------------------------------|-------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------|
66-
| `otel.traces.exporter` <br /> `OTEL_TRACES_EXPORTER` | `none` | Select the OpenTelemetry exporter for tracing, the currently only supported values are `none` and `otlp`. `none` makes the instrumentation NoOp |
67-
| `otel.exporter.otlp.endpoint` <br /> `OTEL_EXPORTER_OTLP_ENDPOINT` | `http://localhost:4317` | The OTLP traces and metrics endpoint to connect to. Must be a URL with a scheme of either `http` or `https` based on the use of TLS. |
68-
| `otel.exporter.otlp.headers` <br /> `OTEL_EXPORTER_OTLP_HEADERS` | | Key-value pairs separated by commas to pass as request headers on OTLP trace and metrics requests. |
69-
| `otel.exporter.otlp.timeout` <br /> `OTEL_EXPORTER_OTLP_TIMEOUT` | `10000` | The maximum waiting time, in milliseconds, allowed to send each OTLP trace and metric batch. |
70-
| `otel.resource.attributes` <br /> `OTEL_RESOURCE_ATTRIBUTES` | | Specify resource attributes in the following format: key1=val1,key2=val2,key3=val3 |
71-
| `otel.instrumentation.maven.mojo.enabled` <br /> `OTEL_INSTRUMENTATION_MAVEN_MOJO_ENABLED` | `true` | Whether to create spans for mojo goal executions, `true` or `false`. Can be configured to reduce the number of spans created for large builds. |
64+
| System property <br /> Environment variable | Default value | Description |
65+
|----------------------------------------------------------------------------------------------------|-------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------|
66+
| `otel.traces.exporter` <br /> `OTEL_TRACES_EXPORTER` | `none` | Select the OpenTelemetry exporter for tracing, the currently only supported values are `none` and `otlp`. `none` makes the instrumentation NoOp |
67+
| `otel.exporter.otlp.endpoint` <br /> `OTEL_EXPORTER_OTLP_ENDPOINT` | `http://localhost:4317` | The OTLP traces and metrics endpoint to connect to. Must be a URL with a scheme of either `http` or `https` based on the use of TLS. |
68+
| `otel.exporter.otlp.headers` <br /> `OTEL_EXPORTER_OTLP_HEADERS` | | Key-value pairs separated by commas to pass as request headers on OTLP trace and metrics requests. |
69+
| `otel.exporter.otlp.timeout` <br /> `OTEL_EXPORTER_OTLP_TIMEOUT` | `10000` | The maximum waiting time, in milliseconds, allowed to send each OTLP trace and metric batch. |
70+
| `otel.resource.attributes` <br /> `OTEL_RESOURCE_ATTRIBUTES` | | Specify resource attributes in the following format: key1=val1,key2=val2,key3=val3 |
71+
| `otel.instrumentation.maven.mojo.enabled` <br /> `OTEL_INSTRUMENTATION_MAVEN_MOJO_ENABLED` | `true` | Whether to create spans for mojo goal executions, `true` or `false`. Can be configured to reduce the number of spans created for large builds. |
72+
| `otel.instrumentation.maven.transfer.enabled` <br /> `OTEL_INSTRUMENTATION_MAVEN_TRANSFER_ENABLED` | `false` | Whether to create spans for artifact transfers, `true` or `false`. Can be activated to understand impact of artifact transfers on performances. |
7273

7374
ℹ️ The `service.name` is set to `maven` and the `service.version` to the version of the Maven runtime in use.
7475

maven-extension/src/main/java/io/opentelemetry/maven/OpenTelemetrySdkService.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ public OpenTelemetrySdkService() {
8080
configProperties.getBoolean("otel.instrumentation.maven.mojo.enabled", true);
8181
// TODO maybe default would be false
8282
this.transferInstrumentationEnabled =
83-
configProperties.getBoolean("otel.instrumentation.maven.transfer.enabled", true);
83+
configProperties.getBoolean("otel.instrumentation.maven.transfer.enabled", false);
8484

8585
this.tracer = openTelemetrySdk.getTracer("io.opentelemetry.contrib.maven", VERSION);
8686
}

maven-extension/src/main/java/io/opentelemetry/maven/OtelTransferListener.java

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ public final class OtelTransferListener extends AbstractTransferListener {
5050

5151
@Override
5252
public void transferInitiated(TransferEvent event) {
53-
logger.info("OpenTelemetry: OtelTransferListener#transferInitiated({})", event);
53+
logger.debug("OpenTelemetry: OtelTransferListener#transferInitiated({})", event);
5454

5555
String httpRequestMethod;
5656
switch (event.getRequestType()) {
@@ -64,7 +64,7 @@ public void transferInitiated(TransferEvent event) {
6464
httpRequestMethod = "HEAD";
6565
break;
6666
default:
67-
logger.warn("OpenTelemetry: Unknown request type {}", event.getRequestType());
67+
logger.warn("OpenTelemetry: Unknown request type {} for event {}", event.getRequestType(), event);
6868
httpRequestMethod = event.getRequestType().name();
6969
}
7070

@@ -74,6 +74,7 @@ public void transferInitiated(TransferEvent event) {
7474

7575
String spanName = httpRequestMethod + " " + urlTemplate;
7676

77+
// Build an HTTP client span as the http call itself is not instrumented.
7778
SpanBuilder spanBuilder =
7879
this.openTelemetrySdkService
7980
.getTracer()
@@ -85,7 +86,8 @@ public void transferInitiated(TransferEvent event) {
8586
event.getResource().getRepositoryUrl() + event.getResource().getResourceName())
8687
.setAttribute(UrlIncubatingAttributes.URL_TEMPLATE, urlTemplate)
8788
.setAttribute(
88-
MavenOtelSemanticAttributes.MAVEN_TRANSFER_TYPE, event.getRequestType().name());
89+
MavenOtelSemanticAttributes.MAVEN_TRANSFER_TYPE, event.getRequestType().name())
90+
.setAttribute(MavenOtelSemanticAttributes.MAVEN_RESOURCE_NAME, event.getResource().getResourceName());
8991

9092
repositoryUriMapping
9193
.computeIfAbsent(
@@ -113,7 +115,7 @@ public void transferInitiated(TransferEvent event) {
113115

114116
@Override
115117
public void transferSucceeded(TransferEvent event) {
116-
logger.info("OpenTelemetry: OtelTransferListener#transferSucceeded({})", event);
118+
logger.debug("OpenTelemetry: OtelTransferListener#transferSucceeded({})", event);
117119

118120
Optional.ofNullable(spanRegistry.removeSpan(event))
119121
.ifPresent(
@@ -125,14 +127,14 @@ public void transferSucceeded(TransferEvent event) {
125127

126128
@Override
127129
public void transferFailed(TransferEvent event) {
128-
logger.info("OpenTelemetry: OtelTransferListener#transferFailed({})", event);
130+
logger.debug("OpenTelemetry: OtelTransferListener#transferFailed({})", event);
129131

130132
Optional.ofNullable(spanRegistry.removeSpan(event)).ifPresent(span -> fail(span, event));
131133
}
132134

133135
@Override
134136
public void transferCorrupted(TransferEvent event) {
135-
logger.info("OpenTelemetry: OtelTransferListener#transferCorrupted({})", event);
137+
logger.debug("OpenTelemetry: OtelTransferListener#transferCorrupted({})", event);
136138

137139
Optional.ofNullable(spanRegistry.removeSpan(event)).ifPresent(span -> fail(span, event));
138140
}

maven-extension/src/main/java/io/opentelemetry/maven/semconv/MavenOtelSemanticAttributes.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,9 @@ public class MavenOtelSemanticAttributes {
5858
/** See {@link TransferEvent.RequestType}. */
5959
public static final AttributeKey<String> MAVEN_TRANSFER_TYPE =
6060
AttributeKey.stringKey("maven.transfer.type");
61+
/** See {@link org.eclipse.aether.transfer.TransferResource}. */
62+
public static final AttributeKey<String> MAVEN_RESOURCE_NAME =
63+
AttributeKey.stringKey("maven.resource.name");
6164

6265
public static final String SERVICE_NAME_VALUE = "maven";
6366

0 commit comments

Comments
 (0)