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:
Mateusz Rzeszutek 2021-10-05 19:25:45 +02:00 committed by GitHub
parent 0cfc71c3c6
commit 7791be24e0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
29 changed files with 10 additions and 211 deletions

View File

@ -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();
}

View File

@ -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);
}

View File

@ -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);
}

View File

@ -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);

View File

@ -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));

View File

@ -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);

View File

@ -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);

View File

@ -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);

View File

@ -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);

View File

@ -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);

View File

@ -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;
}

View File

@ -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());

View File

@ -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;
}

View File

@ -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);

View File

@ -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);

View File

@ -22,10 +22,6 @@ public class HttpDispatcherLink {
throw new UnsupportedOperationException();
}
public String getRequestedHost() {
throw new UnsupportedOperationException();
}
public int getRequestedPort() {
throw new UnsupportedOperationException();
}

View File

@ -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();

View File

@ -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;
}

View File

@ -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);

View File

@ -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);

View File

@ -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);

View File

@ -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);

View File

@ -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;
}

View File

@ -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);

View File

@ -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());

View File

@ -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;

View File

@ -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));

View File

@ -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();

View File

@ -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}" : ""}"
}