diff options
Diffstat (limited to 'lib/gitlab/grpc_correlation_interceptor.rb')
-rw-r--r-- | lib/gitlab/grpc_correlation_interceptor.rb | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/lib/gitlab/grpc_correlation_interceptor.rb b/lib/gitlab/grpc_correlation_interceptor.rb new file mode 100644 index 00000000000..5bb8cf35c98 --- /dev/null +++ b/lib/gitlab/grpc_correlation_interceptor.rb @@ -0,0 +1,38 @@ +# frozen_string_literal: true + +module Gitlab + class GRPCCorrelationInterceptor < GRPC::ClientInterceptor + include Singleton + + def request_response(request:, call:, method:, metadata:) + inject_correlator(metadata) do + yield + end + end + + def client_streamer(requests:, call:, method:, metadata:) + inject_correlator(metadata) do + yield + end + end + + def server_streamer(request:, call:, method:, metadata:) + inject_correlator(metadata) do + yield + end + end + + def bidi_streamer(requests:, call:, method:, metadata:) + inject_correlator(metadata) do + yield + end + end + + private + + def inject_correlator(metadata) + metadata["x-gitlab-correlation-id"] = Gitlab::CorrelationId.current_id + yield + end + end +end |