Skip to content
Merged
Original file line number Diff line number Diff line change
Expand Up @@ -61,9 +61,9 @@ private static WebClient createWebClient(ServerExtension server) {

@Test
@SuppressWarnings("deprecation") // using deprecated semconv
void testHello() throws Exception {
void testHello() {
// verify that spans are created and context is propagated
AggregatedHttpResponse result = createWebClient(server2).get("/").aggregate().get();
AggregatedHttpResponse result = createWebClient(server2).get("/").aggregate().join();
assertThat(result.contentAscii()).isEqualTo("hello");

testing.waitAndAssertTraces(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@
package io.opentelemetry.instrumentation.armeria.v1_3.internal;

import static java.util.Collections.emptyIterator;
import static java.util.stream.Collectors.toList;

import com.linecorp.armeria.server.ServiceRequestContext;
import io.netty.util.AsciiString;
Expand All @@ -18,9 +17,7 @@ final class RequestContextGetter implements TextMapGetter<ServiceRequestContext>

@Override
public Iterable<String> keys(ServiceRequestContext carrier) {
return carrier.request().headers().names().stream()
.map(AsciiString::toString)
.collect(toList());
return () -> new HeaderNamesIterator(carrier.request().headers().names().iterator());
}

@Override
Expand All @@ -39,4 +36,23 @@ public Iterator<String> getAll(@Nullable ServiceRequestContext carrier, String k
}
return carrier.request().headers().valueIterator(key);
}

static final class HeaderNamesIterator implements Iterator<String> {

private final Iterator<AsciiString> delegate;

HeaderNamesIterator(Iterator<AsciiString> delegate) {
this.delegate = delegate;
}

@Override
public boolean hasNext() {
return delegate.hasNext();
}

@Override
public String next() {
return delegate.next().toString();
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -172,7 +172,7 @@ protected Server setupServer() {

@Override
protected void stopServer(Server server) {
server.stop();
server.stop().join();
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ configurations.configureEach {
if (!name.contains("muzzle")) {
resolutionStrategy {
eachDependency {
// specifying a fixed version for all libraries with io.netty' group
// specify a fixed version for all libraries in the io.netty group
if (requested.group == "io.netty" && requested.name != "netty-bom") {
useVersion("3.9.0.Final")
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ public String getUrlFull(Request request) {
}

@Override
@Nullable
public String getServerAddress(Request request) {
return request.getUri().getHost();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,16 +8,19 @@ semantic_conventions:
- HTTP_CLIENT_METRICS
configurations:
- name: otel.instrumentation.http.known-methods
declarative_name: java.common.http.known_methods
description: >
Configures the instrumentation to recognize an alternative set of HTTP request methods. All
other methods will be treated as `_OTHER`.
type: list
default: "CONNECT,DELETE,GET,HEAD,OPTIONS,PATCH,POST,PUT,TRACE"
- name: otel.instrumentation.http.client.capture-request-headers
declarative_name: general.http.client.request_captured_headers
description: List of HTTP request headers to capture in HTTP client telemetry.
type: list
default: ""
- name: otel.instrumentation.http.client.capture-response-headers
declarative_name: general.http.client.response_captured_headers
description: List of HTTP response headers to capture in HTTP client telemetry.
type: list
default: ""
Expand All @@ -26,13 +29,15 @@ configurations:
type: map
default: ""
- name: otel.instrumentation.http.client.emit-experimental-telemetry
declarative_name: java.common.http.client.emit_experimental_telemetry/development
description: >
Enable the capture of experimental HTTP client telemetry. Adds the `http.request.body.size`
and `http.response.body.size` attributes to spans, and records `http.client.request.size` and
`http.client.response.size` metrics.
type: boolean
default: false
- name: otel.instrumentation.sanitization.url.experimental.sensitive-query-parameters
declarative_name: general.sanitization.url.sensitive_query_parameters/development
description: List of URL query parameter names whose values are redacted in URL attributes. See https://opentelemetry.io/docs/specs/semconv/http/http-spans.
type: list
default: "AWSAccessKeyId,Signature,sig,X-Goog-Signature"
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,6 @@

public class CompletableFutureWrapper {

private CompletableFutureWrapper() {}

public static <T> CompletableFuture<T> wrap(CompletableFuture<T> future, Context context) {
CompletableFuture<T> result = new CompletableFuture<>();
future.whenComplete(
Expand All @@ -28,4 +26,6 @@ public static <T> CompletableFuture<T> wrap(CompletableFuture<T> future, Context

return result;
}

private CompletableFutureWrapper() {}
}
Original file line number Diff line number Diff line change
Expand Up @@ -8,16 +8,19 @@ semantic_conventions:
- HTTP_CLIENT_METRICS
configurations:
- name: otel.instrumentation.http.known-methods
declarative_name: java.common.http.known_methods
description: >
Configures the instrumentation to recognize an alternative set of HTTP request methods. All
other methods will be treated as `_OTHER`.
type: list
default: "CONNECT,DELETE,GET,HEAD,OPTIONS,PATCH,POST,PUT,TRACE"
- name: otel.instrumentation.http.client.capture-request-headers
declarative_name: general.http.client.request_captured_headers
description: List of HTTP request headers to capture in HTTP client telemetry.
type: list
default: ""
- name: otel.instrumentation.http.client.capture-response-headers
declarative_name: general.http.client.response_captured_headers
description: List of HTTP response headers to capture in HTTP client telemetry.
type: list
default: ""
Expand All @@ -26,13 +29,15 @@ configurations:
type: map
default: ""
- name: otel.instrumentation.http.client.emit-experimental-telemetry
declarative_name: java.common.http.client.emit_experimental_telemetry/development
description: >
Enable the capture of experimental HTTP client telemetry. Adds the `http.request.body.size`
and `http.response.body.size` attributes to spans, and records `http.client.request.size` and
`http.client.response.size` metrics.
type: boolean
default: false
- name: otel.instrumentation.sanitization.url.experimental.sensitive-query-parameters
declarative_name: general.sanitization.url.sensitive_query_parameters/development
description: List of URL query parameter names whose values are redacted in URL attributes. See https://opentelemetry.io/docs/specs/semconv/http/http-spans.
type: list
default: "AWSAccessKeyId,Signature,sig,X-Goog-Signature"
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ public interface AsyncHttpClientHelper {
* Get the server port from the request.
*
* @param request the HTTP request
* @return the server port
* @return the server port, or {@code null} if the request URI has no explicit or derivable port
*/
@Nullable
Integer getServerPort(Request request);
Expand Down
Loading