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 9dfd39e..dfcba8e 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 @@ -20,12 +20,18 @@ public class RequestContextConstants { public static final String AUTHORIZATION_HEADER = "authorization"; + public static final String CTX_HEADER_PREFIX = "x-ctx-"; + public static final String CTX_TENANT_ID_KEY = CTX_HEADER_PREFIX + "tenant-id"; + public static final String CTX_REQUEST_ID_KEY = CTX_HEADER_PREFIX + "request-id"; + public static final String CTX_CONTEXT_ID_KEY = CTX_HEADER_PREFIX + "id"; + /** The values in this set are looked up with case insensitivity. */ public static final Set HEADER_PREFIXES_TO_BE_PROPAGATED = Set.of( TENANT_ID_HEADER_KEY, CONTEXT_ID_HEADER_KEY, SUPPRESS_USER_TRACKING_HEADER_KEY, + CTX_HEADER_PREFIX, "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 670bf64..366840e 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,10 @@ 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.CTX_CONTEXT_ID_KEY; +import static org.hypertrace.core.grpcutils.context.RequestContextConstants.CTX_HEADER_PREFIX; +import static org.hypertrace.core.grpcutils.context.RequestContextConstants.CTX_REQUEST_ID_KEY; +import static org.hypertrace.core.grpcutils.context.RequestContextConstants.CTX_TENANT_ID_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; @@ -66,9 +70,13 @@ public void onComplete() { @Override 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)); + MDC.put(CTX_REQUEST_ID_KEY, requestId); + opTenantId.ifPresent(s -> MDC.put(CTX_TENANT_ID_KEY, s)); + opContextId.ifPresent(s -> MDC.put(CTX_CONTEXT_ID_KEY, s)); + currentContext.getAllHeaders().stream() + .filter(header -> header.getName().startsWith(CTX_HEADER_PREFIX)) + .filter(header -> header.getValue() != null) + .forEach(header -> MDC.put(header.getName(), header.getValue())); } catch (Exception e) { log.error("Error while setting request context details in MDC params", e); }