gruf-lightstep 1.2.0 → 1.5.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 03171299f85c9b42debe5369c906caf4c48fd658c593e5d352cbde7d4b2cacfe
4
- data.tar.gz: 4d877406f1f62a6830dd5716beae9b3856f7788771e62036bf86a949f613fb27
3
+ metadata.gz: 287470dd4cdd7a7190852a7971c019cd9ec7e856914a870ca7501630ea4ff51d
4
+ data.tar.gz: 8b34d6ab2b31a2a5cf2f2a6b5836a539cc6001825c659951c006cc2fc24c50ec
5
5
  SHA512:
6
- metadata.gz: f4d188c2a0a91c11f5d9aa6ffd47617116171a78c766d40612a54e515f2182925f9e451ee77eeb99db0ffed12f2d7e35f5f70adf87f3bbb6d894b8c80b55e080
7
- data.tar.gz: af7280d6b9c409234d199e450e3cfd656f9ed86b5a3bb02fe39e5dbbe244f2b888026a56635a91fa70f3f16189a4bc8058247a19dd813d512e480991246fef12
6
+ metadata.gz: 1f6682eb881f2ee3e439cf399c3b2d0f458a4e1e7c60dedcfe29fcdd403588a398557c7ffe2e1f8566d8d062fd0f6e5965ef573069b8818b1652b87309d08ed4
7
+ data.tar.gz: f5d5ae22dc7210d37e863f6dbe60e9611718990017f2b1c82d0edb9ab826fc95c533ae99f6b3a5e021d0a9ea07c14a8eea1cabafe89741aca37b9134e149becd
data/CHANGELOG.md CHANGED
@@ -1,56 +1,80 @@
1
- Changelog for the gruf-zipkin gem.
1
+ Changelog for the gruf-lightstep gem.
2
2
 
3
- h3. Pending Release
3
+ ### Pending Release
4
4
 
5
- h3. 1.2.0
5
+ ### 1.5.1
6
+
7
+ - Remove unnecessarily strict dev dependencies
8
+
9
+ ### 1.5.0
10
+
11
+ - Add official support for Ruby 3
12
+
13
+ ### 1.4.0
14
+
15
+ - Ensure `error` span tag is always set when an exception is raised
16
+ - Move from whitelist -> allowlist in server interceptor
17
+
18
+ ### 1.3.0
19
+
20
+ - Bump Ruby requirement to 2.6+
21
+ - Bump bc-lightstep-ruby dependency to 2.0+
22
+ - Explicitly declare gruf requirement in gemspec
23
+ - Explicitly declare development deps for gem
24
+
25
+ ### 1.2.1
26
+
27
+ - Ensure boundary span has `span.kind` set
28
+
29
+ ### 1.2.0
6
30
 
7
31
  - Add `frozen_string_literal: true` to all files
8
32
  - Deprecate ruby 2.2 support
9
33
 
10
- h3. 1.1.3
34
+ ### 1.1.3
11
35
 
12
36
  - Bump bc-lightstep-ruby to 1.2.0
13
37
 
14
- h3. 1.1.2
38
+ ### 1.1.2
15
39
 
16
40
  - First OSS release
17
41
  - Explicitly require bc-lightstep-ruby dependency
18
- - Add option to whitelist request params to lightstep as span tags
42
+ - Add option to allowlist request params to lightstep as span tags
19
43
 
20
- h3. 1.1.1
44
+ ### 1.1.1
21
45
 
22
46
  - Bump bc-lightstep-ruby to 1.1.5
23
47
  - Bump gruf minimum version to 2.4
24
48
 
25
- h3. 1.1.0
49
+ ### 1.1.0
26
50
 
27
51
  - Exclude client validation errors from being "errors"
28
52
 
29
- h3. 1.0.3
53
+ ### 1.0.3
30
54
 
31
55
  - Ensure gRPC requests are always the root span
32
56
 
33
- h3. 1.0.2
57
+ ### 1.0.2
34
58
 
35
59
  - Add ignore_methods as an option to server interceptor
36
60
  - Standardize span tags according to BC spec
37
61
 
38
- h3. 1.0.0
62
+ ### 1.0.0
39
63
 
40
64
  - Support for gruf 2.0.0
41
65
 
42
- h3. 0.10.3
66
+ ### 0.10.3
43
67
 
44
68
  - Update to 0.10.3, add rubocop+bundler-audit
45
69
 
46
- h3. 0.10.2
70
+ ### 0.10.2
47
71
 
48
72
  - Updated license to MIT
49
73
 
50
- h3. 0.10.1
74
+ ### 0.10.1
51
75
 
52
76
  - Handle case when tracer is not yet initialized before trace executes
53
77
 
54
- h3. 0.10.0
78
+ ### 0.10.0
55
79
 
56
80
  - Initial public release
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
@@ -15,7 +15,7 @@
15
15
  # COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
16
16
  # OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
17
17
  #
18
- $:.push File.expand_path("../lib", __FILE__)
18
+ $LOAD_PATH.unshift(File.expand_path('lib', __dir__))
19
19
  require 'gruf/lightstep/version'
20
20
 
21
21
  Gem::Specification.new do |spec|
@@ -24,7 +24,7 @@ Gem::Specification.new do |spec|
24
24
  spec.authors = ['Shaun McCormick']
25
25
  spec.email = ['shaun.mccormick@bigcommerce.com']
26
26
 
27
- spec.summary = %q{Plugin for lightstep tracing for gruf}
27
+ spec.summary = 'Plugin for lightstep tracing for gruf'
28
28
  spec.description = spec.summary
29
29
  spec.homepage = 'https://github.com/bigcommerce/gruf-lightstep'
30
30
  spec.license = 'MIT'
@@ -32,10 +32,16 @@ Gem::Specification.new do |spec|
32
32
  spec.files = Dir['README.md', 'CHANGELOG.md', 'CODE_OF_CONDUCT.md', 'lib/**/*', 'gruf-lightstep.gemspec']
33
33
  spec.require_paths = ['lib']
34
34
 
35
- spec.add_development_dependency 'bundler', '~> 1.11'
36
- spec.add_development_dependency 'rake', '~> 10.0'
37
- spec.add_development_dependency 'rspec', '~> 3.7'
38
- spec.add_development_dependency 'pry'
35
+ spec.required_ruby_version = '>= 2.6'
39
36
 
40
- spec.add_runtime_dependency 'bc-lightstep-ruby', '~> 1.2'
37
+ spec.add_development_dependency 'bundler-audit', '>= 0.6'
38
+ spec.add_development_dependency 'pry', '>= 0.13'
39
+ spec.add_development_dependency 'rake', '>= 12.0'
40
+ spec.add_development_dependency 'rspec', '>= 3.8'
41
+ spec.add_development_dependency 'rspec_junit_formatter', '>= 0.4'
42
+ spec.add_development_dependency 'rubocop', '>= 0.82'
43
+ spec.add_development_dependency 'simplecov', '>= 0.15'
44
+
45
+ spec.add_runtime_dependency 'bc-lightstep-ruby', '~> 2.2'
46
+ spec.add_runtime_dependency 'gruf', '>= 2.4', '< 3'
41
47
  end
@@ -44,7 +44,7 @@ module Gruf
44
44
  return unless tracer
45
45
 
46
46
  span = tracer.active_span
47
- return unless span&.is_a?(::LightStep::Span)
47
+ return unless span.is_a?(::LightStep::Span)
48
48
 
49
49
  span
50
50
  end
@@ -35,7 +35,7 @@ module Gruf
35
35
  end
36
36
 
37
37
  ##
38
- # @return [Gruf::Zipkin::Headers]
38
+ # @return [Gruf::Lightstep::Headers]
39
39
  #
40
40
  def headers
41
41
  @headers ||= Gruf::Lightstep::Headers.new(@active_call)
@@ -21,32 +21,32 @@ 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|
38
37
  span.set_tag('grpc.method', request.method_key)
39
38
  span.set_tag('grpc.request_class', request.request_class)
40
39
  span.set_tag('grpc.service', request.service_key)
40
+ span.set_tag('span.kind', 'server')
41
41
 
42
- whitelist.each do |param|
42
+ allowlist.each do |param|
43
43
  span.set_tag(param.to_s, params[param]) if params.key?(param)
44
44
  end
45
45
 
46
46
  begin
47
47
  result = yield
48
48
  rescue StandardError => e
49
- span.set_tag('error', true) if error?(e)
49
+ span.set_tag('error', error?(e))
50
50
  span.set_tag('grpc.error', true)
51
51
  span.set_tag('grpc.error_code', code_for(e))
52
52
  span.set_tag('grpc.error_class', e.class)
@@ -58,6 +58,19 @@ module Gruf
58
58
 
59
59
  private
60
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
+
61
74
  ##
62
75
  # @param [StandardError]
63
76
  # @return [Number] that maps to one of the GRCP::Core::StatusCodes or Gruf::Lightstep.default_error_code
@@ -93,7 +106,7 @@ module Gruf
93
106
  # @return [Array]
94
107
  #
95
108
  def error_classes
96
- 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)
97
110
  end
98
111
  end
99
112
  end
@@ -17,6 +17,6 @@
17
17
  #
18
18
  module Gruf
19
19
  module Lightstep
20
- VERSION = '1.2.0'
20
+ VERSION = '1.5.1'
21
21
  end
22
22
  end
metadata CHANGED
@@ -1,85 +1,147 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gruf-lightstep
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.0
4
+ version: 1.5.1
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: 2019-05-01 00:00:00.000000000 Z
11
+ date: 2021-06-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: bundler
14
+ name: bundler-audit
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: '1.11'
19
+ version: '0.6'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - "~>"
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0.6'
27
+ - !ruby/object:Gem::Dependency
28
+ name: pry
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0.13'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
25
39
  - !ruby/object:Gem::Version
26
- version: '1.11'
40
+ version: '0.13'
27
41
  - !ruby/object:Gem::Dependency
28
42
  name: rake
29
43
  requirement: !ruby/object:Gem::Requirement
30
44
  requirements:
31
- - - "~>"
45
+ - - ">="
32
46
  - !ruby/object:Gem::Version
33
- version: '10.0'
47
+ version: '12.0'
34
48
  type: :development
35
49
  prerelease: false
36
50
  version_requirements: !ruby/object:Gem::Requirement
37
51
  requirements:
38
- - - "~>"
52
+ - - ">="
39
53
  - !ruby/object:Gem::Version
40
- version: '10.0'
54
+ version: '12.0'
41
55
  - !ruby/object:Gem::Dependency
42
56
  name: rspec
43
57
  requirement: !ruby/object:Gem::Requirement
44
58
  requirements:
45
- - - "~>"
59
+ - - ">="
46
60
  - !ruby/object:Gem::Version
47
- version: '3.7'
61
+ version: '3.8'
48
62
  type: :development
49
63
  prerelease: false
50
64
  version_requirements: !ruby/object:Gem::Requirement
51
65
  requirements:
52
- - - "~>"
66
+ - - ">="
53
67
  - !ruby/object:Gem::Version
54
- version: '3.7'
68
+ version: '3.8'
55
69
  - !ruby/object:Gem::Dependency
56
- name: pry
70
+ name: rspec_junit_formatter
57
71
  requirement: !ruby/object:Gem::Requirement
58
72
  requirements:
59
73
  - - ">="
60
74
  - !ruby/object:Gem::Version
61
- version: '0'
75
+ version: '0.4'
62
76
  type: :development
63
77
  prerelease: false
64
78
  version_requirements: !ruby/object:Gem::Requirement
65
79
  requirements:
66
80
  - - ">="
67
81
  - !ruby/object:Gem::Version
68
- version: '0'
82
+ version: '0.4'
83
+ - !ruby/object:Gem::Dependency
84
+ name: rubocop
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0.82'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0.82'
97
+ - !ruby/object:Gem::Dependency
98
+ name: simplecov
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0.15'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0.15'
69
111
  - !ruby/object:Gem::Dependency
70
112
  name: bc-lightstep-ruby
71
113
  requirement: !ruby/object:Gem::Requirement
72
114
  requirements:
73
115
  - - "~>"
74
116
  - !ruby/object:Gem::Version
75
- version: '1.2'
117
+ version: '2.2'
76
118
  type: :runtime
77
119
  prerelease: false
78
120
  version_requirements: !ruby/object:Gem::Requirement
79
121
  requirements:
80
122
  - - "~>"
81
123
  - !ruby/object:Gem::Version
82
- version: '1.2'
124
+ version: '2.2'
125
+ - !ruby/object:Gem::Dependency
126
+ name: gruf
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - ">="
130
+ - !ruby/object:Gem::Version
131
+ version: '2.4'
132
+ - - "<"
133
+ - !ruby/object:Gem::Version
134
+ version: '3'
135
+ type: :runtime
136
+ prerelease: false
137
+ version_requirements: !ruby/object:Gem::Requirement
138
+ requirements:
139
+ - - ">="
140
+ - !ruby/object:Gem::Version
141
+ version: '2.4'
142
+ - - "<"
143
+ - !ruby/object:Gem::Version
144
+ version: '3'
83
145
  description: Plugin for lightstep tracing for gruf
84
146
  email:
85
147
  - shaun.mccormick@bigcommerce.com
@@ -102,7 +164,7 @@ homepage: https://github.com/bigcommerce/gruf-lightstep
102
164
  licenses:
103
165
  - MIT
104
166
  metadata: {}
105
- post_install_message:
167
+ post_install_message:
106
168
  rdoc_options: []
107
169
  require_paths:
108
170
  - lib
@@ -110,16 +172,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
110
172
  requirements:
111
173
  - - ">="
112
174
  - !ruby/object:Gem::Version
113
- version: '0'
175
+ version: '2.6'
114
176
  required_rubygems_version: !ruby/object:Gem::Requirement
115
177
  requirements:
116
178
  - - ">="
117
179
  - !ruby/object:Gem::Version
118
180
  version: '0'
119
181
  requirements: []
120
- rubyforge_project:
121
- rubygems_version: 2.7.7
122
- signing_key:
182
+ rubygems_version: 3.2.16
183
+ signing_key:
123
184
  specification_version: 4
124
185
  summary: Plugin for lightstep tracing for gruf
125
186
  test_files: []