gitlab-labkit 0.5.2 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a8e8c2b52b6c4c63c4cded0ebf69fe68a74a03a8f02135e8c816ada927f74631
4
- data.tar.gz: 3c0db5e80d47e8121f3211af5955c26dd6f19a6aed3c56c4acc57f17511f5651
3
+ metadata.gz: 657f2a528464eceb2b62cba36dba3dc262722a95ff2a351a71fb2162a7e5b949
4
+ data.tar.gz: 97d123fab3d434469eea2c948d26535decfd38ccad14f1b26aa441c26acef367
5
5
  SHA512:
6
- metadata.gz: e562304883df27ad611536b45bf9548cfce823187ad055a5fcc46042933a7f6e78633da60480936ea2003d246b9f5181fbd2b05caba125c6dd1153f5792bf6ca
7
- data.tar.gz: 2b1de826bb738a38d54332b89b5ab01d6da5b2b0237544d475b476a2cae46ad21f165ff44d2292e4e56aa5ebef0d30d6968becea99361aab7b2ea7684f177621
6
+ metadata.gz: 70ca817fd1f24705c50888f0e4ee22091424b6b2d05f12543bc8d0a350725b9052df28fa6ead8742d9ce5863d30d808955d574335b35939675aff61fa8e3815a
7
+ data.tar.gz: 5bab0eecef0233b1620f6da6ab609b6ff8af4ea96db6ed1803f924f55bae24f8f8e4de6497bd2131112d234ca5509baf75412b0bc64111207b01419274cd469c
@@ -3,6 +3,8 @@
3
3
  module Labkit
4
4
  # Correlation provides correlation functionality
5
5
  module Correlation
6
+ autoload :GRPC, "labkit/correlation/grpc"
7
+
6
8
  autoload :CorrelationId, "labkit/correlation/correlation_id"
7
9
  end
8
10
  end
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Labkit
4
+ module Correlation
5
+ # The GRPC module contains functionality for instrumenting GRPC calls
6
+ module GRPC
7
+ autoload :GRPCCommon, "labkit/correlation/grpc/grpc_common"
8
+ autoload :ServerInterceptor, "labkit/correlation/grpc/server_interceptor"
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Labkit
4
+ module Correlation
5
+ module GRPC
6
+ # This module is shared between the client and server interceptor middlewares.
7
+ # It is not part of the public API
8
+ module GRPCCommon
9
+ CORRELATION_METADATA_KEY = "x-gitlab-correlation-id"
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,55 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Disable the UnusedMethodArgument linter, since we need to declare the kwargs
4
+ # in the methods, but we don't actually use them.
5
+ # rubocop:disable Lint/UnusedMethodArgument
6
+
7
+ require "grpc"
8
+
9
+ module Labkit
10
+ module Correlation
11
+ module GRPC
12
+ # ServerInterceptor is a server-side GRPC interceptor
13
+ # for injecting GRPC calls with a correlation-id passed from
14
+ # a GRPC client to the GRPC Ruby Service
15
+ class ServerInterceptor < ::GRPC::ServerInterceptor
16
+ include Labkit::Correlation::GRPC::GRPCCommon
17
+
18
+ def request_response(request: nil, call: nil, method: nil)
19
+ wrap_with_correlation_id(call) do
20
+ yield
21
+ end
22
+ end
23
+
24
+ def client_streamer(call: nil, method: nil)
25
+ wrap_with_correlation_id(call) do
26
+ yield
27
+ end
28
+ end
29
+
30
+ def server_streamer(request: nil, call: nil, method: nil)
31
+ wrap_with_correlation_id(call) do
32
+ yield
33
+ end
34
+ end
35
+
36
+ def bidi_streamer(requests: nil, call: nil, method: nil)
37
+ wrap_with_correlation_id(call) do
38
+ yield
39
+ end
40
+ end
41
+
42
+ private
43
+
44
+ def wrap_with_correlation_id(call, &block)
45
+ correlation_id = call.metadata[CORRELATION_METADATA_KEY]
46
+ correlation_id ||= Labkit::Correlation::CorrelationId.current_or_new_id
47
+
48
+ Labkit::Correlation::CorrelationId.use_id(correlation_id, &block)
49
+ end
50
+ end
51
+ end
52
+ end
53
+ end
54
+
55
+ # rubocop:enable Lint/UnusedMethodArgument
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gitlab-labkit
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.2
4
+ version: 0.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andrew Newdigate
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-08-22 00:00:00.000000000 Z
11
+ date: 2019-08-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: actionpack
@@ -233,6 +233,9 @@ files:
233
233
  - lib/gitlab-labkit.rb
234
234
  - lib/labkit/correlation.rb
235
235
  - lib/labkit/correlation/correlation_id.rb
236
+ - lib/labkit/correlation/grpc.rb
237
+ - lib/labkit/correlation/grpc/grpc_common.rb
238
+ - lib/labkit/correlation/grpc/server_interceptor.rb
236
239
  - lib/labkit/logging.rb
237
240
  - lib/labkit/logging/sanitizer.rb
238
241
  - lib/labkit/tracing.rb