Remove implementations of host() and userAgent() in HTTP extractors (#4299)
* Remove implementations of host() and userAgent() in HTTP extractors * fix broken headers copying
This commit is contained in:
parent
0cfc71c3c6
commit
7791be24e0
|
@ -75,13 +75,11 @@ public class InstrumenterBenchmark {
|
|||
return "https://opentelemetry.io/benchmark";
|
||||
}
|
||||
|
||||
@Override
|
||||
protected @Nullable String userAgent(Void unused) {
|
||||
return "OpenTelemetryBot";
|
||||
}
|
||||
|
||||
@Override
|
||||
protected List<String> requestHeader(Void unused, String name) {
|
||||
if (name.equalsIgnoreCase("user-agent")) {
|
||||
return Collections.singletonList("OpenTelemetryBot");
|
||||
}
|
||||
return Collections.emptyList();
|
||||
}
|
||||
|
||||
|
|
|
@ -87,9 +87,8 @@ public abstract class HttpCommonAttributesExtractor<REQUEST, RESPONSE>
|
|||
@Nullable
|
||||
protected abstract String method(REQUEST request);
|
||||
|
||||
// TODO: remove implementations?
|
||||
@Nullable
|
||||
protected String userAgent(REQUEST request) {
|
||||
private String userAgent(REQUEST request) {
|
||||
List<String> values = requestHeader(request, "user-agent");
|
||||
return values.isEmpty() ? null : values.get(0);
|
||||
}
|
||||
|
|
|
@ -64,9 +64,8 @@ public abstract class HttpServerAttributesExtractor<REQUEST, RESPONSE>
|
|||
@Nullable
|
||||
protected abstract String target(REQUEST request);
|
||||
|
||||
// TODO: remove implementations?
|
||||
@Nullable
|
||||
protected String host(REQUEST request) {
|
||||
private String host(REQUEST request) {
|
||||
List<String> values = requestHeader(request, "host");
|
||||
return values.isEmpty() ? null : values.get(0);
|
||||
}
|
||||
|
|
|
@ -36,13 +36,6 @@ final class ApacheHttpClientHttpAttributesExtractor
|
|||
return getUrl(request);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Nullable
|
||||
protected String userAgent(HttpMethod request) {
|
||||
Header header = request.getRequestHeader("User-Agent");
|
||||
return header != null ? header.getValue() : null;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected List<String> requestHeader(HttpMethod request, String name) {
|
||||
Header header = request.getRequestHeader(name);
|
||||
|
|
|
@ -68,13 +68,6 @@ final class ApacheHttpClientHttpAttributesExtractor
|
|||
return url.toString();
|
||||
}
|
||||
|
||||
@Override
|
||||
@Nullable
|
||||
protected String userAgent(ClassicHttpRequest request) {
|
||||
Header header = request.getFirstHeader("User-Agent");
|
||||
return header != null ? header.getValue() : null;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected List<String> requestHeader(ClassicHttpRequest request, String name) {
|
||||
return headersToList(request.getHeaders(name));
|
||||
|
|
|
@ -5,7 +5,6 @@
|
|||
|
||||
package io.opentelemetry.instrumentation.armeria.v1_3;
|
||||
|
||||
import com.linecorp.armeria.common.HttpHeaderNames;
|
||||
import com.linecorp.armeria.common.HttpRequest;
|
||||
import com.linecorp.armeria.common.HttpStatus;
|
||||
import com.linecorp.armeria.common.RequestContext;
|
||||
|
@ -35,12 +34,6 @@ final class ArmeriaHttpClientAttributesExtractor
|
|||
return request(ctx).uri().toString();
|
||||
}
|
||||
|
||||
@Override
|
||||
@Nullable
|
||||
protected String userAgent(RequestContext ctx) {
|
||||
return request(ctx).headers().get(HttpHeaderNames.USER_AGENT);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected List<String> requestHeader(RequestContext ctx, String name) {
|
||||
return request(ctx).headers().getAll(name);
|
||||
|
|
|
@ -5,7 +5,6 @@
|
|||
|
||||
package io.opentelemetry.instrumentation.armeria.v1_3;
|
||||
|
||||
import com.linecorp.armeria.common.HttpHeaderNames;
|
||||
import com.linecorp.armeria.common.HttpRequest;
|
||||
import com.linecorp.armeria.common.HttpStatus;
|
||||
import com.linecorp.armeria.common.RequestContext;
|
||||
|
@ -36,24 +35,12 @@ final class ArmeriaHttpServerAttributesExtractor
|
|||
return request(ctx).path();
|
||||
}
|
||||
|
||||
@Override
|
||||
@Nullable
|
||||
protected String host(RequestContext ctx) {
|
||||
return request(ctx).authority();
|
||||
}
|
||||
|
||||
@Override
|
||||
@Nullable
|
||||
protected String scheme(RequestContext ctx) {
|
||||
return request(ctx).scheme();
|
||||
}
|
||||
|
||||
@Override
|
||||
@Nullable
|
||||
protected String userAgent(RequestContext ctx) {
|
||||
return request(ctx).headers().get(HttpHeaderNames.USER_AGENT);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected List<String> requestHeader(RequestContext ctx, String name) {
|
||||
return request(ctx).headers().getAll(name);
|
||||
|
|
|
@ -30,11 +30,6 @@ final class GoogleHttpClientHttpAttributesExtractor
|
|||
return httpRequest.getUrl().build();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected @Nullable String userAgent(HttpRequest httpRequest) {
|
||||
return httpRequest.getHeaders().getUserAgent();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected List<String> requestHeader(HttpRequest httpRequest, String name) {
|
||||
return httpRequest.getHeaders().getHeaderStringValues(name);
|
||||
|
|
|
@ -32,11 +32,6 @@ class HttpUrlHttpAttributesExtractor
|
|||
return connection.getURL().toExternalForm();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected @Nullable String userAgent(HttpURLConnection connection) {
|
||||
return connection.getRequestProperty("User-Agent");
|
||||
}
|
||||
|
||||
@Override
|
||||
protected List<String> requestHeader(HttpURLConnection connection, String name) {
|
||||
String value = connection.getRequestProperty(name);
|
||||
|
|
|
@ -31,11 +31,6 @@ class JdkHttpAttributesExtractor
|
|||
return httpRequest.uri().toString();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected @Nullable String userAgent(HttpRequest httpRequest) {
|
||||
return httpRequest.headers().firstValue("User-Agent").orElse(null);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected List<String> requestHeader(HttpRequest httpRequest, String name) {
|
||||
return httpRequest.headers().allValues(name);
|
||||
|
|
|
@ -33,12 +33,6 @@ final class JaxRsClientHttpAttributesExtractor
|
|||
return httpRequest.getURI().toString();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected @Nullable String userAgent(ClientRequest httpRequest) {
|
||||
Object header = httpRequest.getHeaders().getFirst("User-Agent");
|
||||
return header != null ? header.toString() : null;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected List<String> requestHeader(ClientRequest httpRequest, String name) {
|
||||
List<Object> rawHeaders = httpRequest.getHeaders().getOrDefault(name, emptyList());
|
||||
|
@ -46,9 +40,8 @@ final class JaxRsClientHttpAttributesExtractor
|
|||
return emptyList();
|
||||
}
|
||||
List<String> stringHeaders = new ArrayList<>(rawHeaders.size());
|
||||
int i = 0;
|
||||
for (Object headerValue : rawHeaders) {
|
||||
stringHeaders.set(i++, String.valueOf(headerValue));
|
||||
stringHeaders.add(String.valueOf(headerValue));
|
||||
}
|
||||
return stringHeaders;
|
||||
}
|
||||
|
|
|
@ -32,11 +32,6 @@ final class JaxRsClientHttpAttributesExtractor
|
|||
return httpRequest.getUri().toString();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected @Nullable String userAgent(ClientRequestContext httpRequest) {
|
||||
return httpRequest.getHeaderString("User-Agent");
|
||||
}
|
||||
|
||||
@Override
|
||||
protected List<String> requestHeader(ClientRequestContext httpRequest, String name) {
|
||||
return httpRequest.getStringHeaders().getOrDefault(name, emptyList());
|
||||
|
|
|
@ -33,11 +33,6 @@ final class ResteasyClientHttpAttributesExtractor
|
|||
return httpRequest.getUri().toString();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected @Nullable String userAgent(ClientInvocation httpRequest) {
|
||||
return httpRequest.getHeaders().getHeader("User-Agent");
|
||||
}
|
||||
|
||||
@Override
|
||||
protected List<String> requestHeader(ClientInvocation httpRequest, String name) {
|
||||
List<Object> rawHeaders = httpRequest.getHeaders().getHeaders().getOrDefault(name, emptyList());
|
||||
|
@ -45,9 +40,8 @@ final class ResteasyClientHttpAttributesExtractor
|
|||
return emptyList();
|
||||
}
|
||||
List<String> stringHeaders = new ArrayList<>(rawHeaders.size());
|
||||
int i = 0;
|
||||
for (Object headerValue : rawHeaders) {
|
||||
stringHeaders.set(i++, String.valueOf(headerValue));
|
||||
stringHeaders.add(String.valueOf(headerValue));
|
||||
}
|
||||
return stringHeaders;
|
||||
}
|
||||
|
|
|
@ -43,13 +43,6 @@ final class JettyClientHttpAttributesExtractor
|
|||
return request.getURI().toString();
|
||||
}
|
||||
|
||||
@Override
|
||||
@Nullable
|
||||
protected String userAgent(Request request) {
|
||||
HttpField agentField = request.getHeaders().getField(HttpHeader.USER_AGENT);
|
||||
return agentField != null ? agentField.getValue() : null;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected List<String> requestHeader(Request request, String name) {
|
||||
return request.getHeaders().getValuesList(name);
|
||||
|
|
|
@ -32,11 +32,6 @@ class KubernetesHttpAttributesExtractor
|
|||
return request.url().toString();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected @Nullable String userAgent(Request request) {
|
||||
return request.header("user-agent");
|
||||
}
|
||||
|
||||
@Override
|
||||
protected List<String> requestHeader(Request request, String name) {
|
||||
return request.headers(name);
|
||||
|
|
|
@ -22,10 +22,6 @@ public class HttpDispatcherLink {
|
|||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
public String getRequestedHost() {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
public int getRequestedPort() {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
|
|
@ -22,11 +22,6 @@ public class LibertyDispatcherHttpAttributesExtractor
|
|||
return libertyRequest.getMethod();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected @Nullable String userAgent(LibertyRequest libertyRequest) {
|
||||
return libertyRequest.getHeaderValue("User-Agent");
|
||||
}
|
||||
|
||||
@Override
|
||||
protected List<String> requestHeader(LibertyRequest libertyRequest, String name) {
|
||||
return libertyRequest.getHeaderValues(name);
|
||||
|
@ -90,11 +85,6 @@ public class LibertyDispatcherHttpAttributesExtractor
|
|||
return requestUri;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected String host(LibertyRequest libertyRequest) {
|
||||
return libertyRequest.getServerName() + ":" + libertyRequest.getServerPort();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected @Nullable String scheme(LibertyRequest libertyRequest) {
|
||||
return libertyRequest.getScheme();
|
||||
|
|
|
@ -39,10 +39,6 @@ public class LibertyRequest {
|
|||
return httpRequestMessage.getQueryString();
|
||||
}
|
||||
|
||||
public String getServerName() {
|
||||
return httpDispatcherLink.getRequestedHost();
|
||||
}
|
||||
|
||||
public int getServerPort() {
|
||||
return httpDispatcherLink.getRequestedPort();
|
||||
}
|
||||
|
@ -62,9 +58,8 @@ public class LibertyRequest {
|
|||
return Collections.emptyList();
|
||||
}
|
||||
List<String> stringHeaders = new ArrayList<>(headers.size());
|
||||
int i = 0;
|
||||
for (HeaderField header : headers) {
|
||||
stringHeaders.set(i++, header.asString());
|
||||
stringHeaders.add(header.asString());
|
||||
}
|
||||
return stringHeaders;
|
||||
}
|
||||
|
|
|
@ -30,12 +30,6 @@ final class OkHttp2HttpAttributesExtractor
|
|||
return request.urlString();
|
||||
}
|
||||
|
||||
@Override
|
||||
@Nullable
|
||||
protected String userAgent(Request request) {
|
||||
return request.header("User-Agent");
|
||||
}
|
||||
|
||||
@Override
|
||||
protected List<String> requestHeader(Request request, String name) {
|
||||
return request.headers(name);
|
||||
|
|
|
@ -30,12 +30,6 @@ final class OkHttpAttributesExtractor extends HttpClientAttributesExtractor<Requ
|
|||
return request.url().toString();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected @Nullable String userAgent(Request request) {
|
||||
// using lowercase header name intentionally to ensure extraction is not case-sensitive
|
||||
return request.header("user-agent");
|
||||
}
|
||||
|
||||
@Override
|
||||
protected List<String> requestHeader(Request request, String name) {
|
||||
return request.headers(name);
|
||||
|
|
|
@ -30,12 +30,6 @@ final class PlayWsClientHttpAttributesExtractor
|
|||
return request.getUri().toUrl();
|
||||
}
|
||||
|
||||
@Override
|
||||
@Nullable
|
||||
protected String userAgent(Request request) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected List<String> requestHeader(Request request, String name) {
|
||||
return request.getHeaders().getAll(name);
|
||||
|
|
|
@ -8,7 +8,6 @@ package io.opentelemetry.instrumentation.ratpack;
|
|||
import io.opentelemetry.instrumentation.api.instrumenter.http.CapturedHttpHeaders;
|
||||
import io.opentelemetry.instrumentation.api.instrumenter.http.HttpServerAttributesExtractor;
|
||||
import io.opentelemetry.semconv.trace.attributes.SemanticAttributes;
|
||||
import java.net.URI;
|
||||
import java.util.List;
|
||||
import org.checkerframework.checker.nullness.qual.Nullable;
|
||||
import ratpack.handling.Context;
|
||||
|
@ -35,21 +34,6 @@ final class RatpackHttpAttributesExtractor
|
|||
return request.getUri();
|
||||
}
|
||||
|
||||
@Override
|
||||
@Nullable
|
||||
protected String host(Request request) {
|
||||
Context ratpackContext = request.get(Context.class);
|
||||
if (ratpackContext == null) {
|
||||
return null;
|
||||
}
|
||||
PublicAddress publicAddress = ratpackContext.get(PublicAddress.class);
|
||||
if (publicAddress == null) {
|
||||
return null;
|
||||
}
|
||||
URI uri = publicAddress.get();
|
||||
return uri.getHost() + ":" + uri.getPort();
|
||||
}
|
||||
|
||||
@Override
|
||||
@Nullable
|
||||
protected String route(Request request) {
|
||||
|
@ -71,12 +55,6 @@ final class RatpackHttpAttributesExtractor
|
|||
return publicAddress.get().getScheme();
|
||||
}
|
||||
|
||||
@Override
|
||||
@Nullable
|
||||
protected String userAgent(Request request) {
|
||||
return request.getHeaders().get("user-agent");
|
||||
}
|
||||
|
||||
@Override
|
||||
protected List<String> requestHeader(Request request, String name) {
|
||||
return request.getHeaders().getAll(name);
|
||||
|
|
|
@ -40,12 +40,6 @@ final class RestletHttpAttributesExtractor
|
|||
return ref.hasQuery() ? path + "?" + ref.getQuery() : path;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected String host(Request request) {
|
||||
Reference originalRef = request.getOriginalRef();
|
||||
return originalRef.getHostDomain() + ":" + originalRef.getHostPort();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected @Nullable String route(Request request) {
|
||||
return null;
|
||||
|
@ -56,11 +50,6 @@ final class RestletHttpAttributesExtractor
|
|||
return request.getOriginalRef().getScheme();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected @Nullable String userAgent(Request request) {
|
||||
return request.getClientInfo().getAgent();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected List<String> requestHeader(Request request, String name) {
|
||||
return parametersToList(getHeaders(request).subList(name, /* ignoreCase = */ true));
|
||||
|
@ -124,9 +113,8 @@ final class RestletHttpAttributesExtractor
|
|||
return Collections.emptyList();
|
||||
}
|
||||
List<String> stringHeaders = new ArrayList<>(headers.size());
|
||||
int i = 0;
|
||||
for (Parameter header : headers) {
|
||||
stringHeaders.set(i++, header.getValue());
|
||||
stringHeaders.add(header.getValue());
|
||||
}
|
||||
return stringHeaders;
|
||||
}
|
||||
|
|
|
@ -37,22 +37,11 @@ public class ServletHttpAttributesExtractor<REQUEST, RESPONSE>
|
|||
return target;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected @Nullable String host(ServletRequestContext<REQUEST> requestContext) {
|
||||
REQUEST request = requestContext.request();
|
||||
return accessor.getRequestServerName(request) + ":" + accessor.getRequestServerPort(request);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected @Nullable String scheme(ServletRequestContext<REQUEST> requestContext) {
|
||||
return accessor.getRequestScheme(requestContext.request());
|
||||
}
|
||||
|
||||
@Override
|
||||
protected @Nullable String userAgent(ServletRequestContext<REQUEST> requestContext) {
|
||||
return accessor.getRequestHeader(requestContext.request(), "User-Agent");
|
||||
}
|
||||
|
||||
@Override
|
||||
protected List<String> requestHeader(ServletRequestContext<REQUEST> requestContext, String name) {
|
||||
return accessor.getRequestHeaderValues(requestContext.request(), name);
|
||||
|
|
|
@ -34,12 +34,6 @@ final class SpringWebHttpAttributesExtractor
|
|||
return httpRequest.getURI().toString();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected @Nullable String userAgent(HttpRequest httpRequest) {
|
||||
// using lowercase header name intentionally to ensure extraction is not case-sensitive
|
||||
return httpRequest.getHeaders().getFirst("user-agent");
|
||||
}
|
||||
|
||||
@Override
|
||||
protected List<String> requestHeader(HttpRequest httpRequest, String name) {
|
||||
return httpRequest.getHeaders().getOrDefault(name, emptyList());
|
||||
|
|
|
@ -29,11 +29,6 @@ final class SpringWebMvcHttpAttributesExtractor
|
|||
return request.getMethod();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected @Nullable String userAgent(HttpServletRequest request) {
|
||||
return request.getHeader("user-agent");
|
||||
}
|
||||
|
||||
@Override
|
||||
protected List<String> requestHeader(HttpServletRequest request, String name) {
|
||||
Enumeration<String> headers = request.getHeaders(name);
|
||||
|
@ -98,11 +93,6 @@ final class SpringWebMvcHttpAttributesExtractor
|
|||
return target;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected @Nullable String host(HttpServletRequest request) {
|
||||
return request.getHeader("host");
|
||||
}
|
||||
|
||||
@Override
|
||||
protected @Nullable String route(HttpServletRequest request) {
|
||||
return null;
|
||||
|
|
|
@ -36,22 +36,12 @@ public class TomcatHttpAttributesExtractor
|
|||
return target;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected @Nullable String host(Request request) {
|
||||
return request.serverName().toString() + ":" + request.getServerPort();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected @Nullable String scheme(Request request) {
|
||||
MessageBytes schemeMessageBytes = request.scheme();
|
||||
return schemeMessageBytes.isNull() ? "http" : schemeMessageBytes.toString();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected @Nullable String userAgent(Request request) {
|
||||
return request.getHeader("User-Agent");
|
||||
}
|
||||
|
||||
@Override
|
||||
protected List<String> requestHeader(Request request, String name) {
|
||||
return Collections.list(request.getMimeHeaders().values(name));
|
||||
|
|
|
@ -25,11 +25,6 @@ public class UndertowHttpAttributesExtractor
|
|||
return exchange.getRequestMethod().toString();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected @Nullable String userAgent(HttpServerExchange exchange) {
|
||||
return exchange.getRequestHeaders().getFirst("User-Agent");
|
||||
}
|
||||
|
||||
@Override
|
||||
protected List<String> requestHeader(HttpServerExchange exchange, String name) {
|
||||
HeaderValues values = exchange.getRequestHeaders().get(name);
|
||||
|
@ -94,11 +89,6 @@ public class UndertowHttpAttributesExtractor
|
|||
return requestPath;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected @Nullable String host(HttpServerExchange exchange) {
|
||||
return exchange.getHostAndPort();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected @Nullable String scheme(HttpServerExchange exchange) {
|
||||
return exchange.getRequestScheme();
|
||||
|
|
|
@ -578,8 +578,8 @@ abstract class HttpServerTest<SERVER> extends InstrumentationSpecification imple
|
|||
// netty instrumentation uses this
|
||||
"${SemanticAttributes.HTTP_URL.key}" { it == "${endpoint.resolve(address)}" || it == "${endpoint.resolveWithoutFragment(address)}" }
|
||||
} else {
|
||||
"${SemanticAttributes.HTTP_HOST}" "localhost:${port}"
|
||||
"${SemanticAttributes.HTTP_SCHEME}" "http"
|
||||
"${SemanticAttributes.HTTP_HOST}" { it == "localhost" || it == "localhost:${port}" }
|
||||
"${SemanticAttributes.HTTP_TARGET}" endpoint.resolvePath(address).getPath() + "${endpoint == QUERY_PARAM ? "?${endpoint.body}" : ""}"
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue