diff --git a/grpc-context-utils/src/main/java/org/hypertrace/core/grpcutils/context/RequestContextConstants.java b/grpc-context-utils/src/main/java/org/hypertrace/core/grpcutils/context/RequestContextConstants.java index 3dc9a45..1951043 100644 --- a/grpc-context-utils/src/main/java/org/hypertrace/core/grpcutils/context/RequestContextConstants.java +++ b/grpc-context-utils/src/main/java/org/hypertrace/core/grpcutils/context/RequestContextConstants.java @@ -12,6 +12,7 @@ public class RequestContextConstants { public static final String TENANT_ID_HEADER_KEY = "x-tenant-id"; public static final String REQUEST_ID_HEADER_KEY = "request-id"; + public static final String CONTEXT_ID_HEADER_KEY = "context-id"; public static final Metadata.Key TENANT_ID_METADATA_KEY = Metadata.Key.of(TENANT_ID_HEADER_KEY, ASCII_STRING_MARSHALLER); @@ -22,6 +23,7 @@ public class RequestContextConstants { public static final Set HEADER_PREFIXES_TO_BE_PROPAGATED = Set.of( TENANT_ID_HEADER_KEY, + CONTEXT_ID_HEADER_KEY, "X-B3-", "grpc-trace-bin", "traceparent", diff --git a/grpc-server-utils/src/main/java/org/hypertrace/core/grpcutils/server/RequestContextLoggingServerInterceptor.java b/grpc-server-utils/src/main/java/org/hypertrace/core/grpcutils/server/RequestContextLoggingServerInterceptor.java index ba99f8e..670bf64 100644 --- a/grpc-server-utils/src/main/java/org/hypertrace/core/grpcutils/server/RequestContextLoggingServerInterceptor.java +++ b/grpc-server-utils/src/main/java/org/hypertrace/core/grpcutils/server/RequestContextLoggingServerInterceptor.java @@ -1,6 +1,8 @@ package org.hypertrace.core.grpcutils.server; +import static org.hypertrace.core.grpcutils.context.RequestContextConstants.CONTEXT_ID_HEADER_KEY; import static org.hypertrace.core.grpcutils.context.RequestContextConstants.REQUEST_ID_HEADER_KEY; +import static org.hypertrace.core.grpcutils.context.RequestContextConstants.TENANT_ID_HEADER_KEY; import io.grpc.Context; import io.grpc.Contexts; @@ -27,6 +29,8 @@ public ServerCall.Listener interceptCall( Optional.ofNullable(RequestContext.CURRENT.get()) .orElseGet(() -> RequestContext.fromMetadata(metadata)); Optional opRequestId = currentContext.getHeaderValue(REQUEST_ID_HEADER_KEY); + Optional opTenantId = currentContext.getHeaderValue(TENANT_ID_HEADER_KEY); + Optional opContextId = currentContext.getHeaderValue(CONTEXT_ID_HEADER_KEY); if (opRequestId.isEmpty()) { opRequestId = Optional.of(FastUUIDGenerator.randomUUID().toString()); } @@ -63,6 +67,8 @@ public void onComplete() { public void onMessage(ReqT message) { try { MDC.put(REQUEST_ID_HEADER_KEY, requestId); + opTenantId.ifPresent(s -> MDC.put(TENANT_ID_HEADER_KEY, s)); + opContextId.ifPresent(s -> MDC.put(CONTEXT_ID_HEADER_KEY, s)); } catch (Exception e) { log.error("Error while setting request context details in MDC params", e); }