Require `server.address` and `server.port` in the HTTP client getter (#9171)

This commit is contained in:
Mateusz Rzeszutek 2023-08-09 16:56:11 +02:00 committed by GitHub
parent 998f0bad42
commit f8f87944c1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 34 additions and 1 deletions

View File

@ -31,4 +31,14 @@ public interface HttpClientAttributesGetter<REQUEST, RESPONSE>
*/
@Nullable
String getUrlFull(REQUEST request);
/** {@inheritDoc} */
@Nullable
@Override
String getServerAddress(REQUEST request);
/** {@inheritDoc} */
@Nullable
@Override
Integer getServerPort(REQUEST request);
}

View File

@ -8,6 +8,7 @@ package io.opentelemetry.javaagent.instrumentation.vertx.v3_0.client;
import io.opentelemetry.instrumentation.api.util.VirtualField;
import io.opentelemetry.javaagent.instrumentation.vertx.client.AbstractVertxHttpAttributesGetter;
import io.vertx.core.http.HttpClientRequest;
import javax.annotation.Nullable;
final class Vertx3HttpAttributesGetter extends AbstractVertxHttpAttributesGetter {
@ -21,11 +22,33 @@ final class Vertx3HttpAttributesGetter extends AbstractVertxHttpAttributesGetter
// where relative is expected.
if (!isAbsolute(uri)) {
VertxRequestInfo requestInfo = requestInfoField.get(request);
uri = absoluteUri(requestInfo, uri);
if (requestInfo != null) {
uri = absoluteUri(requestInfo, uri);
}
}
return uri;
}
@Nullable
@Override
public String getServerAddress(HttpClientRequest request) {
VertxRequestInfo requestInfo = requestInfoField.get(request);
if (requestInfo == null) {
return null;
}
return requestInfo.getHost();
}
@Nullable
@Override
public Integer getServerPort(HttpClientRequest request) {
VertxRequestInfo requestInfo = requestInfoField.get(request);
if (requestInfo == null) {
return null;
}
return requestInfo.getPort();
}
private static boolean isAbsolute(String uri) {
return uri.startsWith("http://") || uri.startsWith("https://");
}