gruf-lightstep 1.3.0 → 1.4.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: fcd64d7ee13aee60adfad83aea4f5da16e001645255a4f6d002660269a95793a
4
- data.tar.gz: 7065582ddf65d8c60318783f3d28918cba6e1d689ae6d686f6de4568fde19ea7
3
+ metadata.gz: 0f5ebd12fb3f139feb7dd42f1fe60a90fdc336cdde6dde41ce076a0808735384
4
+ data.tar.gz: 249367d93de69139cf8972be60dfb094c2636d7be040d8e15639812a16bd366e
5
5
  SHA512:
6
- metadata.gz: fbf8dee7b06c1154d44f84619122582e6dfebe35d5f34505aa0aab4031e55dd9c8bd9728ca4ab56a3569edd53573f9f93f414d019567104f3b7ecf15cc7ac70a
7
- data.tar.gz: 1cca8317ebaab1087de97fb0ec550598927f300c4995ff5a15a6d2b8ba0fb1c296989aba980847c90c114d41c22b26f99c92abef0c3c757598b2e50737077e6b
6
+ metadata.gz: 05d6ff8c11f1fa20ae1842dc2bfe955baabff38eb4035ac307cbcde020bae0fee7057542e8b93f9aaed70fb064d648255f8d56a520214ddcfe94d5d996e38616
7
+ data.tar.gz: d08c23837bd69d3d8f133f8d3ea67d0a4c5a176a8d12a18afecc3daff15ac6c697f69eb50bc1e13e364531f5c5831275b205dc37c0273d021a86c4d9592c7f53
@@ -2,6 +2,11 @@ Changelog for the gruf-lightstep gem.
2
2
 
3
3
  ### Pending Release
4
4
 
5
+ ### 1.4.0
6
+
7
+ - Ensure `error` span tag is always set when an exception is raised
8
+ - Move from whitelist -> allowlist in server interceptor
9
+
5
10
  ### 1.3.0
6
11
 
7
12
  - Bump Ruby requirement to 2.6+
@@ -26,7 +31,7 @@ Changelog for the gruf-lightstep gem.
26
31
 
27
32
  - First OSS release
28
33
  - Explicitly require bc-lightstep-ruby dependency
29
- - Add option to whitelist request params to lightstep as span tags
34
+ - Add option to allowlist request params to lightstep as span tags
30
35
 
31
36
  ### 1.1.1
32
37
 
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # gruf-lightstep - LightStep tracing for gruf
2
2
 
3
- [![CircleCI](https://circleci.com/gh/bigcommerce/gruf-lightstep/tree/master.svg?style=svg)](https://circleci.com/gh/bigcommerce/gruf-lightstep/tree/master) [![Gem Version](https://badge.fury.io/rb/gruf-lightstep.svg)](https://badge.fury.io/rb/gruf-lightstep) [![Inline docs](http://inch-ci.org/github/bigcommerce/gruf-lightstep.svg?branch=master)](http://inch-ci.org/github/bigcommerce/gruf-lightstep)
3
+ [![CircleCI](https://circleci.com/gh/bigcommerce/gruf-lightstep/tree/main.svg?style=svg)](https://circleci.com/gh/bigcommerce/gruf-lightstep/tree/main) [![Gem Version](https://badge.fury.io/rb/gruf-lightstep.svg)](https://badge.fury.io/rb/gruf-lightstep) [![Inline docs](http://inch-ci.org/github/bigcommerce/gruf-lightstep.svg?branch=main)](http://inch-ci.org/github/bigcommerce/gruf-lightstep)
4
4
 
5
5
  Adds LightStep tracing support for [gruf](https://github.com/bigcommerce/gruf) 2.0.0+.
6
6
 
@@ -14,18 +14,24 @@ Then in an initializer or before use, after loading gruf:
14
14
 
15
15
  ```ruby
16
16
  require 'gruf/lightstep'
17
-
18
- Gruf::Lightstep.configure do |c|
19
- c.component_name = 'myapp'
20
- c.access_token = 'abcdefg'
21
- c.host = 'my.lightstep.service.io'
22
- c.port = 8080
23
- c.verbosity = 1
24
- end
25
- Gruf::Lightstep.start
26
17
  ```
27
18
 
28
- Then after, in your gruf initializer:
19
+ ### Configuration
20
+
21
+ You can use the following ENV vars to configure lightstep:
22
+
23
+ | Name | Description |
24
+ | ---- | ---- |
25
+ |LIGHTSTEP_ACCESS_TOKEN|LightStep access token, if used in your satellites|
26
+ |LIGHTSTEP_COMPONENT_NAME|The name of your service|
27
+ |LIGHTSTEP_HOST|The host of your lightstep satellites|
28
+ |LIGHTSTEP_PORT|The port of your lightstep satellites|
29
+
30
+ See more configuration here: https://github.com/bigcommerce/bc-lightstep-ruby#environment-config
31
+
32
+ ### Server Interceptors
33
+
34
+ In your gruf initializer:
29
35
 
30
36
  ```ruby
31
37
  Gruf.configure do |c|
@@ -37,11 +43,11 @@ It comes with a few more options as well:
37
43
 
38
44
  | Option | Description | Default |
39
45
  | ------ | ----------- | ------- |
40
- | whitelist | An array of parameter key names to log to lightstep. E.g. `[uuid kind]` | `[]` |
46
+ | allowlist | An array of parameter key names to log to lightstep. E.g. `[uuid kind]` | `[]` |
41
47
  | ignore_methods | An array of method names to ignore from logging. E.g. `['namespace.health.check']` | `[]` |
42
48
 
43
- It's important to maintain a safe whitelist should you decide to log parameters; gruf does no
44
- parameter sanitization on its own. We also recommend do not whitelist parameters that may contain
49
+ It's important to maintain a safe allowlist should you decide to log parameters; gruf does no
50
+ parameter sanitization on its own. We also recommend do not allowlist parameters that may contain
45
51
  very large values (such as binary or json data).
46
52
 
47
53
  ### Client Interceptors
@@ -43,6 +43,6 @@ Gem::Specification.new do |spec|
43
43
  spec.add_development_dependency 'rubocop', '~> 0.82'
44
44
  spec.add_development_dependency 'simplecov', '~> 0.15'
45
45
 
46
- spec.add_runtime_dependency 'bc-lightstep-ruby', '~> 2.0'
46
+ spec.add_runtime_dependency 'bc-lightstep-ruby', '~> 2.2'
47
47
  spec.add_runtime_dependency 'gruf', '>= 2.4', '< 3'
48
48
  end
@@ -21,17 +21,16 @@ module Gruf
21
21
  # Intercepts inbound calls to provide LightStep tracing
22
22
  #
23
23
  class ServerInterceptor < Gruf::Interceptors::ServerInterceptor
24
+ DEFAULT_ERROR_CLASSES = %w[GRPC::Unknown GRPC::Internal GRPC::DataLoss GRPC::FailedPrecondition GRPC::Unavailable GRPC::DeadlineExceeded GRPC::Cancelled].freeze
25
+
24
26
  ##
25
27
  # Handle the gruf around hook and trace sampled requests
26
28
  #
27
29
  def call(&_block)
28
- return yield if options.fetch(:ignore_methods, []).include?(request.method_name)
30
+ return yield if ignore_methods.include?(request.method_name)
29
31
 
30
32
  result = nil
31
-
32
- whitelist = options.fetch(:whitelist, []).map(&:to_s).map(&:to_sym)
33
33
  params = request_message_params
34
-
35
34
  tracer = ::Bigcommerce::Lightstep::Tracer.instance
36
35
  tracer.clear_active_span! # because we're always starting from the top on a gRPC boundary
37
36
  tracer.start_span(request.method_name, context: request_method.headers.to_h) do |span|
@@ -40,14 +39,14 @@ module Gruf
40
39
  span.set_tag('grpc.service', request.service_key)
41
40
  span.set_tag('span.kind', 'server')
42
41
 
43
- whitelist.each do |param|
42
+ allowlist.each do |param|
44
43
  span.set_tag(param.to_s, params[param]) if params.key?(param)
45
44
  end
46
45
 
47
46
  begin
48
47
  result = yield
49
48
  rescue StandardError => e
50
- span.set_tag('error', true) if error?(e)
49
+ span.set_tag('error', error?(e))
51
50
  span.set_tag('grpc.error', true)
52
51
  span.set_tag('grpc.error_code', code_for(e))
53
52
  span.set_tag('grpc.error_class', e.class)
@@ -59,6 +58,19 @@ module Gruf
59
58
 
60
59
  private
61
60
 
61
+ ##
62
+ # @return [Array<String>]
63
+ def ignore_methods
64
+ @ignore_methods ||= options.fetch(:ignore_methods, nil) || []
65
+ end
66
+
67
+ ##
68
+ # @return [Array<Symbol>]
69
+ #
70
+ def allowlist
71
+ @allowlist ||= (options.fetch(:allowlist, nil) || []).map(&:to_s).map(&:to_sym)
72
+ end
73
+
62
74
  ##
63
75
  # @param [StandardError]
64
76
  # @return [Number] that maps to one of the GRCP::Core::StatusCodes or Gruf::Lightstep.default_error_code
@@ -94,7 +106,7 @@ module Gruf
94
106
  # @return [Array]
95
107
  #
96
108
  def error_classes
97
- options.fetch(:error_classes, %w[GRPC::Unknown GRPC::Internal GRPC::DataLoss GRPC::FailedPrecondition GRPC::Unavailable GRPC::DeadlineExceeded GRPC::Cancelled])
109
+ @error_classes ||= (options.fetch(:error_classes, nil) || DEFAULT_ERROR_CLASSES)
98
110
  end
99
111
  end
100
112
  end
@@ -17,6 +17,6 @@
17
17
  #
18
18
  module Gruf
19
19
  module Lightstep
20
- VERSION = '1.3.0'
20
+ VERSION = '1.4.0'
21
21
  end
22
22
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gruf-lightstep
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.0
4
+ version: 1.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Shaun McCormick
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-04-20 00:00:00.000000000 Z
11
+ date: 2020-10-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -128,14 +128,14 @@ dependencies:
128
128
  requirements:
129
129
  - - "~>"
130
130
  - !ruby/object:Gem::Version
131
- version: '2.0'
131
+ version: '2.2'
132
132
  type: :runtime
133
133
  prerelease: false
134
134
  version_requirements: !ruby/object:Gem::Requirement
135
135
  requirements:
136
136
  - - "~>"
137
137
  - !ruby/object:Gem::Version
138
- version: '2.0'
138
+ version: '2.2'
139
139
  - !ruby/object:Gem::Dependency
140
140
  name: gruf
141
141
  requirement: !ruby/object:Gem::Requirement
@@ -178,7 +178,7 @@ homepage: https://github.com/bigcommerce/gruf-lightstep
178
178
  licenses:
179
179
  - MIT
180
180
  metadata: {}
181
- post_install_message:
181
+ post_install_message:
182
182
  rdoc_options: []
183
183
  require_paths:
184
184
  - lib
@@ -194,7 +194,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
194
194
  version: '0'
195
195
  requirements: []
196
196
  rubygems_version: 3.0.6
197
- signing_key:
197
+ signing_key:
198
198
  specification_version: 4
199
199
  summary: Plugin for lightstep tracing for gruf
200
200
  test_files: []