Skip to content

Commit

Permalink
xds: Make a copy of Metadata for thread safety. (#9212)
Browse files Browse the repository at this point in the history
  • Loading branch information
temawi committed May 27, 2022
1 parent 7e578ed commit 74112ad
Showing 1 changed file with 6 additions and 1 deletion.
Expand Up @@ -300,10 +300,15 @@ public <ReqT, RespT> ServerCall.Listener<ReqT> interceptCall(ServerCall<ReqT, Re
Metadata requestHeaders, ServerCallHandler<ReqT, RespT> next) {
logger.fine("Received following metadata: " + requestHeaders);

// Make a copy of the headers so that it can be read in a thread-safe manner when copying
// it to the response headers.
Metadata headersToReturn = new Metadata();
headersToReturn.merge(requestHeaders);

return next.startCall(new SimpleForwardingServerCall<ReqT, RespT>(call) {
@Override
public void sendHeaders(Metadata responseHeaders) {
responseHeaders.merge(requestHeaders);
responseHeaders.merge(headersToReturn);
super.sendHeaders(responseHeaders);
}

Expand Down

0 comments on commit 74112ad

Please sign in to comment.