diff --git a/instrumentation/grpc-1.6/library/src/main/java/io/opentelemetry/instrumentation/grpc/v1_6/GrpcRequestGetter.java b/instrumentation/grpc-1.6/library/src/main/java/io/opentelemetry/instrumentation/grpc/v1_6/GrpcRequestGetter.java index 0d7cfe5e48..6ef3210579 100644 --- a/instrumentation/grpc-1.6/library/src/main/java/io/opentelemetry/instrumentation/grpc/v1_6/GrpcRequestGetter.java +++ b/instrumentation/grpc-1.6/library/src/main/java/io/opentelemetry/instrumentation/grpc/v1_6/GrpcRequestGetter.java @@ -5,11 +5,14 @@ package io.opentelemetry.instrumentation.grpc.v1_6; +import static java.util.Collections.emptyIterator; + import io.grpc.Metadata; -import io.opentelemetry.context.propagation.TextMapGetter; +import io.opentelemetry.context.propagation.internal.ExtendedTextMapGetter; +import java.util.Iterator; import javax.annotation.Nullable; -enum GrpcRequestGetter implements TextMapGetter { +enum GrpcRequestGetter implements ExtendedTextMapGetter { INSTANCE; @Override @@ -25,4 +28,19 @@ enum GrpcRequestGetter implements TextMapGetter { } return request.getMetadata().get(Metadata.Key.of(key, Metadata.ASCII_STRING_MARSHALLER)); } + + @Override + public Iterator getAll(@Nullable GrpcRequest request, String key) { + if (request == null) { + return emptyIterator(); + } + + Iterable values = + request.getMetadata().getAll(Metadata.Key.of(key, Metadata.ASCII_STRING_MARSHALLER)); + + if (values == null) { + return emptyIterator(); + } + return values.iterator(); + } }