diff --git a/temporal-serviceclient/src/main/java/io/temporal/serviceclient/WorkflowServiceStubsImpl.java b/temporal-serviceclient/src/main/java/io/temporal/serviceclient/WorkflowServiceStubsImpl.java index 935a019de2..0ff053121c 100644 --- a/temporal-serviceclient/src/main/java/io/temporal/serviceclient/WorkflowServiceStubsImpl.java +++ b/temporal-serviceclient/src/main/java/io/temporal/serviceclient/WorkflowServiceStubsImpl.java @@ -139,6 +139,7 @@ public WorkflowServiceStubsImpl( ClientInterceptor deadlineInterceptor = new GrpcDeadlineInterceptor(options); GrpcTracingInterceptor tracingInterceptor = new GrpcTracingInterceptor(); Metadata headers = new Metadata(); + headers.merge(options.getHeaders()); headers.put(LIBRARY_VERSION_HEADER_KEY, Version.LIBRARY_VERSION); headers.put(SUPPORTED_SERVER_VERSIONS_HEADER_KEY, Version.SUPPORTED_SERVER_VERSIONS); headers.put(CLIENT_NAME_HEADER_KEY, CLIENT_NAME_HEADER_VALUE); diff --git a/temporal-serviceclient/src/main/java/io/temporal/serviceclient/WorkflowServiceStubsOptions.java b/temporal-serviceclient/src/main/java/io/temporal/serviceclient/WorkflowServiceStubsOptions.java index b58b9edfb3..60cbc16695 100644 --- a/temporal-serviceclient/src/main/java/io/temporal/serviceclient/WorkflowServiceStubsOptions.java +++ b/temporal-serviceclient/src/main/java/io/temporal/serviceclient/WorkflowServiceStubsOptions.java @@ -19,16 +19,15 @@ package io.temporal.serviceclient; -import com.google.common.collect.ImmutableMap; import com.uber.m3.tally.NoopScope; import com.uber.m3.tally.Scope; import io.grpc.ManagedChannel; import io.grpc.ManagedChannelBuilder; +import io.grpc.Metadata; import io.grpc.NameResolver; import io.grpc.netty.shaded.io.netty.handler.ssl.SslContext; import io.temporal.api.workflowservice.v1.WorkflowServiceGrpc; import java.time.Duration; -import java.util.Map; import java.util.Objects; import java.util.Optional; import java.util.function.Function; @@ -87,7 +86,7 @@ public static WorkflowServiceStubsOptions getDefaultInstance() { private final Duration connectionBackoffResetFrequency; /** Optional gRPC headers */ - private final Map headers; + private final Metadata headers; private final Scope metricsScope; @@ -143,8 +142,11 @@ private WorkflowServiceStubsOptions(Builder builder, boolean ignore) { this.connectionBackoffResetFrequency = builder.connectionBackoffResetFrequency; this.blockingStubInterceptor = builder.blockingStubInterceptor; this.futureStubInterceptor = builder.futureStubInterceptor; - this.headers = - builder.headers == null ? ImmutableMap.of() : ImmutableMap.copyOf(builder.headers); + if (builder.headers != null) { + this.headers = builder.headers; + } else { + this.headers = new Metadata(); + } this.metricsScope = builder.metricsScope == null ? new NoopScope() : builder.metricsScope; } @@ -189,7 +191,7 @@ public Duration getConnectionBackoffResetFrequency() { return connectionBackoffResetFrequency; } - public Map getHeaders() { + public Metadata getHeaders() { return headers; } @@ -219,6 +221,7 @@ public Scope getMetricsScope() { * @author venkat */ public static class Builder { + private ManagedChannel channel; private SslContext sslContext; private boolean enableHttps; @@ -227,7 +230,7 @@ public static class Builder { private Duration rpcLongPollTimeout = DEFAULT_POLL_RPC_TIMEOUT; private Duration rpcQueryTimeout = DEFAULT_QUERY_RPC_TIMEOUT; private Duration connectionBackoffResetFrequency = DEFAULT_CONNECTION_BACKOFF_RESET_FREQUENCY; - private Map headers; + private Metadata headers; private Function< WorkflowServiceGrpc.WorkflowServiceBlockingStub, WorkflowServiceGrpc.WorkflowServiceBlockingStub> @@ -330,7 +333,7 @@ public Builder setQueryRpcTimeout(Duration timeout) { return this; } - public Builder setHeaders(Map headers) { + public Builder setHeaders(Metadata headers) { this.headers = headers; return this; }