aws-xray 0.16.5 → 0.17.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 +4 -4
- data/README.md +19 -2
- data/lib/aws/xray/client.rb +5 -7
- data/lib/aws/xray/configuration.rb +7 -0
- data/lib/aws/xray/error_handlers.rb +35 -0
- data/lib/aws/xray/version.rb +1 -1
- metadata +4 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4662c7e02f96d99ec218697501619aafc62a6e42
|
4
|
+
data.tar.gz: 21600a8fce7aa843e712b31f0ca7417bf9cc6a3c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 05dd8e836d6149bcbdfd04338103abb82baa82a084dd89b6b77c95a45648d5250ca41637456cff69a38753ce9bc582bad9c2134f7e31f470bf6bfa050f0e5459
|
7
|
+
data.tar.gz: d419d7eacc9e52d05ebbbf068fb795133b87d67fed9997036c39502dad95ac0907927b40d46b2c6d115b18dccf67c0e45f4b41d1f1208fe4c40bb2b0326ee45d
|
data/README.md
CHANGED
@@ -124,8 +124,9 @@ Tracing context is thread local. To pass current tracing context, copy current t
|
|
124
124
|
|
125
125
|
```ruby
|
126
126
|
Thread.new(Aws::Xray::Context.current.copy) do |context|
|
127
|
-
Aws::Xray::Context.
|
128
|
-
|
127
|
+
Aws::Xray::Context.with_given_context(context) do
|
128
|
+
# Do something
|
129
|
+
end
|
129
130
|
end
|
130
131
|
```
|
131
132
|
|
@@ -175,6 +176,22 @@ Aws::Xray.config.default_metadata = Aws::Xray.config.default_metadata.merge(key:
|
|
175
176
|
|
176
177
|
Note: See official document about annotation and metadata in AWS X-Ray.
|
177
178
|
|
179
|
+
### Error handlers
|
180
|
+
When aws-xray fails to send segments due to system call errors, it logs errors to stderr by default.
|
181
|
+
If you want to track these errors, for example with Sentry, you can configure your own error handler:
|
182
|
+
|
183
|
+
```ruby
|
184
|
+
Aws::Xray.config.segment_sending_error_handler = MyCustomErrorHandler.new
|
185
|
+
```
|
186
|
+
|
187
|
+
The error handler must be callable object and receive 2 arguments and 2 keyword arguments. See `Aws::Xray::DefaultErrorHandler` more detail.
|
188
|
+
|
189
|
+
Optionaly, aws-xray offers an error handler which integrats with Sentry. To use it:
|
190
|
+
|
191
|
+
```ruby
|
192
|
+
Aws::Xray.config.segment_sending_error_handler = ErrorHandlerWithSentry.new
|
193
|
+
```
|
194
|
+
|
178
195
|
## Development
|
179
196
|
|
180
197
|
After checking out the repo, run `bin/setup` to install dependencies. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
|
data/lib/aws/xray/client.rb
CHANGED
@@ -25,13 +25,11 @@ module Aws
|
|
25
25
|
len = sock.send(payload, 0, @host, @port)
|
26
26
|
$stderr.puts("Can not send all bytes: #{len} sent") if payload.size != len
|
27
27
|
rescue SystemCallError, SocketError => e
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
#{
|
32
|
-
|
33
|
-
#{e.backtrace.join("\n")}
|
34
|
-
EOS
|
28
|
+
begin
|
29
|
+
Aws::Xray.config.segment_sending_error_handler.call(e, payload, host: @host, port: @port)
|
30
|
+
rescue Exception => e
|
31
|
+
$stderr.puts("Error handler `#{Aws::Xray.config.segment_sending_error_handler}` raised an error: #{e}\n#{e.backtrace.join("\n")}")
|
32
|
+
end
|
35
33
|
ensure
|
36
34
|
sock.close
|
37
35
|
end
|
@@ -1,6 +1,7 @@
|
|
1
1
|
require 'socket'
|
2
2
|
require 'aws/xray/annotation_normalizer'
|
3
3
|
require 'aws/xray/version_detector'
|
4
|
+
require 'aws/xray/error_handlers'
|
4
5
|
|
5
6
|
module Aws
|
6
7
|
module Xray
|
@@ -70,6 +71,12 @@ module Aws
|
|
70
71
|
end
|
71
72
|
# @param [Hash] metadata Default metadata.
|
72
73
|
attr_writer :default_metadata
|
74
|
+
|
75
|
+
def segment_sending_error_handler
|
76
|
+
@segment_sending_error_handler ||= DefaultErrorHandler.new($stderr)
|
77
|
+
end
|
78
|
+
# @param [Proc] segment_sending_error_handler Callable object
|
79
|
+
attr_writer :segment_sending_error_handler
|
73
80
|
end
|
74
81
|
end
|
75
82
|
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
module Aws
|
2
|
+
module Xray
|
3
|
+
class DefaultErrorHandler
|
4
|
+
# @param [IO] io
|
5
|
+
def initialize(io)
|
6
|
+
@io = io
|
7
|
+
end
|
8
|
+
|
9
|
+
# @param [Exception] error
|
10
|
+
# @param [String] payload
|
11
|
+
# @param [String,nil] host
|
12
|
+
# @param [Integer,nil] port
|
13
|
+
def call(error, payload, host:, port:)
|
14
|
+
@io.puts(<<-EOS)
|
15
|
+
Failed to send a segment to #{host}:#{port}:
|
16
|
+
Segnemt:
|
17
|
+
#{payload}
|
18
|
+
Error: #{error}
|
19
|
+
#{error.backtrace.join("\n")}
|
20
|
+
EOS
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
# Must be configured sentry-raven gem.
|
25
|
+
class ErrorHandlerWithSentry
|
26
|
+
def call(error, payload, host:, port:)
|
27
|
+
if defined?(Raven)
|
28
|
+
::Raven.capture_exception(error)
|
29
|
+
else
|
30
|
+
$stderr.puts('ErrorHandlerWithSentry is configured but `Raven` is undefined.')
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
data/lib/aws/xray/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: aws-xray
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.17.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Taiki Ono
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-06-
|
11
|
+
date: 2017-06-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: faraday
|
@@ -156,6 +156,7 @@ files:
|
|
156
156
|
- lib/aws/xray/configuration.rb
|
157
157
|
- lib/aws/xray/context.rb
|
158
158
|
- lib/aws/xray/error.rb
|
159
|
+
- lib/aws/xray/error_handlers.rb
|
159
160
|
- lib/aws/xray/faraday.rb
|
160
161
|
- lib/aws/xray/header_parser.rb
|
161
162
|
- lib/aws/xray/hooks/all.rb
|
@@ -191,7 +192,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
191
192
|
version: '0'
|
192
193
|
requirements: []
|
193
194
|
rubyforge_project:
|
194
|
-
rubygems_version: 2.
|
195
|
+
rubygems_version: 2.6.11
|
195
196
|
signing_key:
|
196
197
|
specification_version: 4
|
197
198
|
summary: The unofficial X-Ray Tracing SDK for Ruby.
|