Skip to content

Commit 3e82918

Browse files
authored
[AST-494] request-id distributed logging interceptor (#88)
1 parent dc4df4c commit 3e82918

File tree

2 files changed

+8
-0
lines changed

2 files changed

+8
-0
lines changed

grpc-context-utils/src/main/java/org/hypertrace/core/grpcutils/context/RequestContextConstants.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
public class RequestContextConstants {
1313
public static final String TENANT_ID_HEADER_KEY = "x-tenant-id";
1414
public static final String REQUEST_ID_HEADER_KEY = "request-id";
15+
public static final String CONTEXT_ID_HEADER_KEY = "context-id";
1516

1617
public static final Metadata.Key<String> TENANT_ID_METADATA_KEY =
1718
Metadata.Key.of(TENANT_ID_HEADER_KEY, ASCII_STRING_MARSHALLER);
@@ -22,6 +23,7 @@ public class RequestContextConstants {
2223
public static final Set<String> HEADER_PREFIXES_TO_BE_PROPAGATED =
2324
Set.of(
2425
TENANT_ID_HEADER_KEY,
26+
CONTEXT_ID_HEADER_KEY,
2527
"X-B3-",
2628
"grpc-trace-bin",
2729
"traceparent",

grpc-server-utils/src/main/java/org/hypertrace/core/grpcutils/server/RequestContextLoggingServerInterceptor.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package org.hypertrace.core.grpcutils.server;
22

3+
import static org.hypertrace.core.grpcutils.context.RequestContextConstants.CONTEXT_ID_HEADER_KEY;
34
import static org.hypertrace.core.grpcutils.context.RequestContextConstants.REQUEST_ID_HEADER_KEY;
5+
import static org.hypertrace.core.grpcutils.context.RequestContextConstants.TENANT_ID_HEADER_KEY;
46

57
import io.grpc.Context;
68
import io.grpc.Contexts;
@@ -27,6 +29,8 @@ public <ReqT, RespT> ServerCall.Listener<ReqT> interceptCall(
2729
Optional.ofNullable(RequestContext.CURRENT.get())
2830
.orElseGet(() -> RequestContext.fromMetadata(metadata));
2931
Optional<String> opRequestId = currentContext.getHeaderValue(REQUEST_ID_HEADER_KEY);
32+
Optional<String> opTenantId = currentContext.getHeaderValue(TENANT_ID_HEADER_KEY);
33+
Optional<String> opContextId = currentContext.getHeaderValue(CONTEXT_ID_HEADER_KEY);
3034
if (opRequestId.isEmpty()) {
3135
opRequestId = Optional.of(FastUUIDGenerator.randomUUID().toString());
3236
}
@@ -63,6 +67,8 @@ public void onComplete() {
6367
public void onMessage(ReqT message) {
6468
try {
6569
MDC.put(REQUEST_ID_HEADER_KEY, requestId);
70+
opTenantId.ifPresent(s -> MDC.put(TENANT_ID_HEADER_KEY, s));
71+
opContextId.ifPresent(s -> MDC.put(CONTEXT_ID_HEADER_KEY, s));
6672
} catch (Exception e) {
6773
log.error("Error while setting request context details in MDC params", e);
6874
}

0 commit comments

Comments
 (0)