Skip to content

Commit f12cdf4

Browse files
chore: support initializing request id (#59)
* chore: support initializing request id * ci: fix codecov
1 parent 253debe commit f12cdf4

File tree

2 files changed

+17
-4
lines changed

2 files changed

+17
-4
lines changed

.github/workflows/pr-test.yml

+2-1
Original file line numberDiff line numberDiff line change
@@ -21,11 +21,12 @@ jobs:
2121
args: build jacocoTestReport
2222

2323
- name: Upload coverage to Codecov
24-
uses: codecov/codecov-action@v3
24+
uses: codecov/codecov-action@v4
2525
with:
2626
name: unit test reports
2727
fail_ci_if_error: true
2828
flags: unit
29+
token: ${{ secrets.CODECOV_TOKEN }}
2930

3031
- name: copy test reports
3132
uses: hypertrace/github-actions/gradle@main

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

+15-3
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,10 @@
66
import io.grpc.ServerCall;
77
import io.grpc.ServerCallHandler;
88
import io.grpc.ServerInterceptor;
9+
import java.util.Optional;
10+
import java.util.UUID;
911
import org.hypertrace.core.grpcutils.context.RequestContext;
12+
import org.hypertrace.core.grpcutils.context.RequestContextConstants;
1013

1114
/**
1215
* Interceptor which intercepts the request headers to extract request context and sets it in the
@@ -20,9 +23,18 @@ public <ReqT, RespT> ServerCall.Listener<ReqT> interceptCall(
2023
ServerCall<ReqT, RespT> serverCall,
2124
Metadata metadata,
2225
ServerCallHandler<ReqT, RespT> serverCallHandler) {
23-
RequestContext requestContext = RequestContext.fromMetadata(metadata);
24-
Context ctx = Context.current().withValue(RequestContext.CURRENT, requestContext);
26+
RequestContext currentContext =
27+
Optional.ofNullable(RequestContext.CURRENT.get())
28+
.orElseGet(() -> RequestContext.fromMetadata(metadata));
29+
if (currentContext.getHeaderValue(RequestContextConstants.REQUEST_ID_HEADER_KEY).isEmpty()) {
30+
currentContext.put(
31+
RequestContextConstants.REQUEST_ID_HEADER_KEY, UUID.randomUUID().toString());
32+
}
2533

26-
return Contexts.interceptCall(ctx, serverCall, metadata, serverCallHandler);
34+
return Contexts.interceptCall(
35+
Context.current().withValue(RequestContext.CURRENT, currentContext),
36+
serverCall,
37+
metadata,
38+
serverCallHandler);
2739
}
2840
}

0 commit comments

Comments
 (0)