Skip to content

Commit 0aab248

Browse files
committed
cosmetics
1 parent a0fb583 commit 0aab248

File tree

2 files changed

+35
-30
lines changed

2 files changed

+35
-30
lines changed

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

Lines changed: 32 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,9 @@
1717
import io.opentelemetry.semconv.incubating.UrlIncubatingAttributes;
1818
import java.net.URI;
1919
import java.net.URISyntaxException;
20+
import java.util.Map;
2021
import java.util.Optional;
22+
import java.util.concurrent.ConcurrentHashMap;
2123
import org.apache.maven.execution.ExecutionListener;
2224
import org.apache.maven.execution.MavenSession;
2325
import org.eclipse.aether.transfer.AbstractTransferListener;
@@ -39,6 +41,8 @@ public final class OtelTransferListener extends AbstractTransferListener {
3941

4042
private final OpenTelemetrySdkService openTelemetrySdkService;
4143

44+
private final Map<String, Optional<URI>> repositoryURIs = new ConcurrentHashMap<>();
45+
4246
OtelTransferListener(SpanRegistry spanRegistry, OpenTelemetrySdkService openTelemetrySdkService) {
4347
this.spanRegistry = spanRegistry;
4448
this.openTelemetrySdkService = openTelemetrySdkService;
@@ -64,8 +68,9 @@ public void transferInitiated(TransferEvent event) {
6468
httpRequestMethod = event.getRequestType().name();
6569
}
6670

67-
String urlTemplate = event.getResource().getRepositoryUrl()
68-
+ "$groupId/$version/$artifactId-$version.$classifier";
71+
String urlTemplate =
72+
event.getResource().getRepositoryUrl()
73+
+ "$groupId/$artifactId/$version/$artifactId-$version.$classifier";
6974

7075
String spanName = httpRequestMethod + " " + urlTemplate;
7176

@@ -75,29 +80,33 @@ public void transferInitiated(TransferEvent event) {
7580
.spanBuilder(spanName)
7681
.setSpanKind(SpanKind.CLIENT)
7782
.setAttribute(HttpAttributes.HTTP_REQUEST_METHOD, httpRequestMethod)
78-
.setAttribute(UrlAttributes.URL_PATH,
83+
.setAttribute(
84+
UrlAttributes.URL_PATH,
7985
event.getResource().getRepositoryUrl() + event.getResource().getResourceName())
8086
.setAttribute(UrlIncubatingAttributes.URL_TEMPLATE, urlTemplate)
81-
.setAttribute(MavenOtelSemanticAttributes.MAVEN_TRANSFER_TYPE,
82-
event.getRequestType().name());
83-
84-
// TODO keep in cache the repositoryUrl parsing
85-
Optional.ofNullable(event.getResource().getRepositoryUrl())
86-
.filter(url -> !url.isEmpty())
87-
.map(str -> {
88-
try {
89-
return new URI(str);
90-
} catch (URISyntaxException e) {
91-
return null;
92-
}
93-
})
87+
.setAttribute(
88+
MavenOtelSemanticAttributes.MAVEN_TRANSFER_TYPE, event.getRequestType().name());
89+
90+
repositoryURIs
91+
.computeIfAbsent(
92+
event.getResource().getRepositoryUrl(),
93+
str -> {
94+
try {
95+
return str.isBlank() ? Optional.empty() : Optional.of(new URI(str));
96+
} catch (URISyntaxException e) {
97+
return Optional.empty();
98+
}
99+
})
94100
.ifPresent(
95101
uri -> {
96-
spanBuilder
97-
.setAttribute(ServerAttributes.SERVER_ADDRESS, uri.getHost());
102+
spanBuilder.setAttribute(ServerAttributes.SERVER_ADDRESS, uri.getHost());
98103
if (uri.getPort() != -1) {
99104
spanBuilder.setAttribute(ServerAttributes.SERVER_PORT, uri.getPort());
100105
}
106+
// prevent ever increasing size
107+
if (repositoryURIs.size() > 128) {
108+
repositoryURIs.clear();
109+
}
101110
});
102111
spanRegistry.putSpan(spanBuilder.startSpan(), event);
103112
}
@@ -118,9 +127,7 @@ public void transferSucceeded(TransferEvent event) {
118127
public void transferFailed(TransferEvent event) {
119128
logger.info("OpenTelemetry: OtelTransferListener#transferFailed({})", event);
120129

121-
Optional.ofNullable(spanRegistry.removeSpan(event))
122-
.ifPresent(span -> fail(span, event));
123-
130+
Optional.ofNullable(spanRegistry.removeSpan(event)).ifPresent(span -> fail(span, event));
124131
}
125132

126133
@Override
@@ -133,13 +140,13 @@ public void transferCorrupted(TransferEvent event) {
133140
void finish(Span span, TransferEvent event) {
134141
switch (event.getRequestType()) {
135142
case PUT:
136-
span.setAttribute(HttpIncubatingAttributes.HTTP_REQUEST_BODY_SIZE,
137-
event.getTransferredBytes());
143+
span.setAttribute(
144+
HttpIncubatingAttributes.HTTP_REQUEST_BODY_SIZE, event.getTransferredBytes());
138145
break;
139146
case GET:
140147
case GET_EXISTENCE:
141-
span.setAttribute(HttpIncubatingAttributes.HTTP_RESPONSE_BODY_SIZE,
142-
event.getTransferredBytes());
148+
span.setAttribute(
149+
HttpIncubatingAttributes.HTTP_RESPONSE_BODY_SIZE, event.getTransferredBytes());
143150
break;
144151
}
145152
span.end();
@@ -151,5 +158,4 @@ void fail(Span span, TransferEvent event) {
151158
Optional.ofNullable(event.getException()).map(Exception::getMessage).orElse("n/a"));
152159
finish(span, event);
153160
}
154-
155161
}

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

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,8 @@
1010

1111
import io.opentelemetry.api.common.AttributeKey;
1212
import io.opentelemetry.maven.OpenTelemetrySdkService;
13-
import org.eclipse.aether.transfer.TransferEvent;
1413
import java.util.List;
14+
import org.eclipse.aether.transfer.TransferEvent;
1515

1616
/**
1717
* Semantic attributes for Maven executions.
@@ -54,9 +54,8 @@ public class MavenOtelSemanticAttributes {
5454
stringKey("maven.project.groupId");
5555
public static final AttributeKey<String> MAVEN_PROJECT_VERSION =
5656
stringKey("maven.project.version");
57-
/**
58-
* See {@link TransferEvent.RequestType}.
59-
*/
57+
58+
/** See {@link TransferEvent.RequestType}. */
6059
public static final AttributeKey<String> MAVEN_TRANSFER_TYPE =
6160
AttributeKey.stringKey("maven.transfer.type");
6261

0 commit comments

Comments
 (0)