jaeger-client 0.10.0 → 1.3.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/.github/workflows/ci.yml +33 -0
- data/.rubocop.yml +12 -1
- data/.rubocop_todo.yml +13 -0
- data/README.md +55 -3
- data/crossdock/Dockerfile +3 -1
- data/crossdock/Gemfile +1 -1
- data/crossdock/Gemfile.lock +15 -13
- data/crossdock/jaeger-docker-compose.yml +19 -14
- data/crossdock/server +6 -4
- data/jaeger-client.gemspec +10 -5
- data/lib/jaeger/client/version.rb +1 -1
- data/lib/jaeger/client.rb +14 -7
- data/lib/jaeger/encoders/thrift_encoder.rb +113 -32
- data/lib/jaeger/extractors.rb +71 -7
- data/lib/jaeger/http_sender.rb +3 -3
- data/lib/jaeger/injectors.rb +19 -5
- data/lib/jaeger/recurring_executor.rb +35 -0
- data/lib/jaeger/samplers/const.rb +1 -1
- data/lib/jaeger/samplers/guaranteed_throughput_probabilistic.rb +13 -6
- data/lib/jaeger/samplers/per_operation.rb +44 -14
- data/lib/jaeger/samplers/probabilistic.rb +15 -1
- data/lib/jaeger/samplers/rate_limiting.rb +24 -6
- data/lib/jaeger/samplers/remote_controlled/instructions_fetcher.rb +34 -0
- data/lib/jaeger/samplers/remote_controlled.rb +119 -0
- data/lib/jaeger/samplers.rb +1 -0
- data/lib/jaeger/scope.rb +3 -2
- data/lib/jaeger/scope_manager.rb +1 -0
- data/lib/jaeger/span.rb +3 -4
- data/lib/jaeger/span_context.rb +3 -3
- data/lib/jaeger/thrift_tag_builder.rb +42 -0
- data/lib/jaeger/trace_id.rb +10 -1
- data/lib/jaeger/tracer.rb +29 -10
- data/lib/jaeger/udp_sender/transport.rb +4 -3
- data/lib/jaeger/udp_sender.rb +9 -7
- metadata +55 -20
- data/.travis.yml +0 -14
- data/lib/jaeger/span/thrift_tag_builder.rb +0 -43
@@ -0,0 +1,42 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Jaeger
|
4
|
+
class ThriftTagBuilder
|
5
|
+
FIELDS = Jaeger::Thrift::Tag::FIELDS
|
6
|
+
KEY = FIELDS[Jaeger::Thrift::Tag::KEY].fetch(:name)
|
7
|
+
VTYPE = FIELDS[Jaeger::Thrift::Tag::VTYPE].fetch(:name)
|
8
|
+
VLONG = FIELDS[Jaeger::Thrift::Tag::VLONG].fetch(:name)
|
9
|
+
VDOUBLE = FIELDS[Jaeger::Thrift::Tag::VDOUBLE].fetch(:name)
|
10
|
+
VBOOL = FIELDS[Jaeger::Thrift::Tag::VBOOL].fetch(:name)
|
11
|
+
VSTR = FIELDS[Jaeger::Thrift::Tag::VSTR].fetch(:name)
|
12
|
+
|
13
|
+
def self.build(key, value)
|
14
|
+
case value
|
15
|
+
when Integer
|
16
|
+
Jaeger::Thrift::Tag.new(
|
17
|
+
KEY => key.to_s,
|
18
|
+
VTYPE => Jaeger::Thrift::TagType::LONG,
|
19
|
+
VLONG => value
|
20
|
+
)
|
21
|
+
when Float
|
22
|
+
Jaeger::Thrift::Tag.new(
|
23
|
+
KEY => key.to_s,
|
24
|
+
VTYPE => Jaeger::Thrift::TagType::DOUBLE,
|
25
|
+
VDOUBLE => value
|
26
|
+
)
|
27
|
+
when TrueClass, FalseClass
|
28
|
+
Jaeger::Thrift::Tag.new(
|
29
|
+
KEY => key.to_s,
|
30
|
+
VTYPE => Jaeger::Thrift::TagType::BOOL,
|
31
|
+
VBOOL => value
|
32
|
+
)
|
33
|
+
else
|
34
|
+
Jaeger::Thrift::Tag.new(
|
35
|
+
KEY => key.to_s,
|
36
|
+
VTYPE => Jaeger::Thrift::TagType::STRING,
|
37
|
+
VSTR => value.to_s
|
38
|
+
)
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
data/lib/jaeger/trace_id.rb
CHANGED
@@ -4,6 +4,7 @@ module Jaeger
|
|
4
4
|
module TraceId
|
5
5
|
MAX_64BIT_SIGNED_INT = (1 << 63) - 1
|
6
6
|
MAX_64BIT_UNSIGNED_INT = (1 << 64) - 1
|
7
|
+
MAX_128BIT_UNSIGNED_INT = (1 << 128) - 1
|
7
8
|
TRACE_ID_UPPER_BOUND = MAX_64BIT_UNSIGNED_INT + 1
|
8
9
|
|
9
10
|
def self.generate
|
@@ -12,8 +13,16 @@ module Jaeger
|
|
12
13
|
|
13
14
|
def self.base16_hex_id_to_uint64(id)
|
14
15
|
return nil unless id
|
16
|
+
|
17
|
+
value = id.to_i(16)
|
18
|
+
value > MAX_64BIT_UNSIGNED_INT || value.negative? ? 0 : value
|
19
|
+
end
|
20
|
+
|
21
|
+
def self.base16_hex_id_to_uint128(id)
|
22
|
+
return nil unless id
|
23
|
+
|
15
24
|
value = id.to_i(16)
|
16
|
-
value >
|
25
|
+
value > MAX_128BIT_UNSIGNED_INT || value.negative? ? 0 : value
|
17
26
|
end
|
18
27
|
|
19
28
|
# Thrift defines ID fields as i64, which is signed, therefore we convert
|
data/lib/jaeger/tracer.rb
CHANGED
@@ -19,7 +19,7 @@ module Jaeger
|
|
19
19
|
# Scope#active is nil.
|
20
20
|
def active_span
|
21
21
|
scope = scope_manager.active
|
22
|
-
scope
|
22
|
+
scope&.span
|
23
23
|
end
|
24
24
|
|
25
25
|
# Starts a new span.
|
@@ -41,7 +41,13 @@ module Jaeger
|
|
41
41
|
# @param ignore_active_scope [Boolean] whether to create an implicit
|
42
42
|
# References#CHILD_OF reference to the ScopeManager#active.
|
43
43
|
#
|
44
|
-
# @
|
44
|
+
# @yield [Span] If passed an optional block, start_span will yield the
|
45
|
+
# newly-created span to the block. The span will be finished automatically
|
46
|
+
# after the block is executed.
|
47
|
+
# @return [Span, Object] If passed an optional block, start_span will return
|
48
|
+
# the block's return value, otherwise it returns the newly-started Span
|
49
|
+
# instance, which has not been automatically registered via the
|
50
|
+
# ScopeManager
|
45
51
|
def start_span(operation_name,
|
46
52
|
child_of: nil,
|
47
53
|
references: nil,
|
@@ -55,7 +61,7 @@ module Jaeger
|
|
55
61
|
references: references,
|
56
62
|
ignore_active_scope: ignore_active_scope
|
57
63
|
)
|
58
|
-
Span.new(
|
64
|
+
span = Span.new(
|
59
65
|
context,
|
60
66
|
operation_name,
|
61
67
|
@reporter,
|
@@ -63,6 +69,16 @@ module Jaeger
|
|
63
69
|
references: references,
|
64
70
|
tags: tags.merge(sampler_tags)
|
65
71
|
)
|
72
|
+
|
73
|
+
if block_given?
|
74
|
+
begin
|
75
|
+
yield(span)
|
76
|
+
ensure
|
77
|
+
span.finish
|
78
|
+
end
|
79
|
+
else
|
80
|
+
span
|
81
|
+
end
|
66
82
|
end
|
67
83
|
|
68
84
|
# Creates a newly started and activated Scope
|
@@ -87,10 +103,12 @@ module Jaeger
|
|
87
103
|
# References#CHILD_OF reference to the ScopeManager#active.
|
88
104
|
# @param finish_on_close [Boolean] whether span should automatically be
|
89
105
|
# finished when Scope#close is called
|
90
|
-
# @yield [Scope] If an optional block is passed to
|
91
|
-
# yield the newly-started Scope. If `finish_on_close` is true then the
|
106
|
+
# @yield [Scope] If an optional block is passed to start_active_span it
|
107
|
+
# will yield the newly-started Scope. If `finish_on_close` is true then the
|
92
108
|
# Span will be finished automatically after the block is executed.
|
93
|
-
# @return [Scope]
|
109
|
+
# @return [Scope, Object] If passed an optional block, start_active_span
|
110
|
+
# returns the block's return value, otherwise it returns the newly-started
|
111
|
+
# and activated Scope
|
94
112
|
def start_active_span(operation_name,
|
95
113
|
child_of: nil,
|
96
114
|
references: nil,
|
@@ -115,9 +133,9 @@ module Jaeger
|
|
115
133
|
ensure
|
116
134
|
scope.close
|
117
135
|
end
|
136
|
+
else
|
137
|
+
scope
|
118
138
|
end
|
119
|
-
|
120
|
-
scope
|
121
139
|
end
|
122
140
|
|
123
141
|
# Inject a SpanContext into the given carrier
|
@@ -157,7 +175,7 @@ module Jaeger
|
|
157
175
|
[SpanContext.create_from_parent_context(context), {}]
|
158
176
|
else
|
159
177
|
trace_id = TraceId.generate
|
160
|
-
is_sampled, tags = @sampler.sample
|
178
|
+
is_sampled, tags = @sampler.sample(
|
161
179
|
trace_id: trace_id,
|
162
180
|
operation_name: operation_name
|
163
181
|
)
|
@@ -172,6 +190,7 @@ module Jaeger
|
|
172
190
|
|
173
191
|
def context_from_child_of(child_of)
|
174
192
|
return nil unless child_of
|
193
|
+
|
175
194
|
child_of.respond_to?(:context) ? child_of.context : child_of
|
176
195
|
end
|
177
196
|
|
@@ -189,7 +208,7 @@ module Jaeger
|
|
189
208
|
return if ignore_active_scope
|
190
209
|
|
191
210
|
active_scope = @scope_manager.active
|
192
|
-
active_scope
|
211
|
+
active_scope&.span&.context
|
193
212
|
end
|
194
213
|
end
|
195
214
|
end
|
@@ -5,10 +5,11 @@ module Jaeger
|
|
5
5
|
class Transport
|
6
6
|
FLAGS = 0
|
7
7
|
|
8
|
-
def initialize(host, port)
|
8
|
+
def initialize(host, port, logger:)
|
9
9
|
@socket = UDPSocket.new
|
10
10
|
@host = host
|
11
11
|
@port = port
|
12
|
+
@logger = logger
|
12
13
|
@buffer = ::Thrift::MemoryBufferTransport.new
|
13
14
|
end
|
14
15
|
|
@@ -31,9 +32,9 @@ module Jaeger
|
|
31
32
|
@socket.send(bytes, FLAGS, @host, @port)
|
32
33
|
@socket.flush
|
33
34
|
rescue Errno::ECONNREFUSED
|
34
|
-
warn 'Unable to connect to Jaeger Agent'
|
35
|
+
@logger.warn 'Unable to connect to Jaeger Agent'
|
35
36
|
rescue StandardError => e
|
36
|
-
warn "Unable to send spans: #{e.message}"
|
37
|
+
@logger.warn "Unable to send spans: #{e.message}"
|
37
38
|
end
|
38
39
|
end
|
39
40
|
end
|
data/lib/jaeger/udp_sender.rb
CHANGED
@@ -5,20 +5,22 @@ require 'socket'
|
|
5
5
|
|
6
6
|
module Jaeger
|
7
7
|
class UdpSender
|
8
|
-
def initialize(host:, port:, encoder:, logger:)
|
8
|
+
def initialize(host:, port:, encoder:, logger:, max_packet_size: 65_000)
|
9
9
|
@encoder = encoder
|
10
10
|
@logger = logger
|
11
11
|
|
12
|
-
transport = Transport.new(host, port)
|
13
|
-
|
12
|
+
transport = Transport.new(host, port, logger: logger)
|
13
|
+
@protocol_class = ::Thrift::CompactProtocol
|
14
|
+
protocol = @protocol_class.new(transport)
|
14
15
|
@client = Jaeger::Thrift::Agent::Client.new(protocol)
|
16
|
+
@max_packet_size = max_packet_size
|
15
17
|
end
|
16
18
|
|
17
19
|
def send_spans(spans)
|
18
|
-
|
19
|
-
@client.emitBatch(batch)
|
20
|
-
rescue StandardError =>
|
21
|
-
@logger.error("Failure while sending a batch of spans: #{
|
20
|
+
batches = @encoder.encode_limited_size(spans, @protocol_class, @max_packet_size)
|
21
|
+
batches.each { |batch| @client.emitBatch(batch) }
|
22
|
+
rescue StandardError => e
|
23
|
+
@logger.error("Failure while sending a batch of spans: #{e}")
|
22
24
|
end
|
23
25
|
end
|
24
26
|
end
|
metadata
CHANGED
@@ -1,85 +1,99 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jaeger-client
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 1.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- SaleMove TechMovers
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2022-02-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - "
|
17
|
+
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '
|
19
|
+
version: '0'
|
20
20
|
type: :development
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- - "
|
24
|
+
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '
|
26
|
+
version: '0'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: rake
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '
|
33
|
+
version: '13.0'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: '
|
40
|
+
version: '13.0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: rspec
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
45
|
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: '3.
|
47
|
+
version: '3.10'
|
48
48
|
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: '3.
|
54
|
+
version: '3.10'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: rubocop
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
59
|
- - "~>"
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version:
|
61
|
+
version: '1.25'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '1.25'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: rubocop-rake
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - "~>"
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0.6'
|
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.6'
|
69
83
|
- !ruby/object:Gem::Dependency
|
70
84
|
name: rubocop-rspec
|
71
85
|
requirement: !ruby/object:Gem::Requirement
|
72
86
|
requirements:
|
73
87
|
- - "~>"
|
74
88
|
- !ruby/object:Gem::Version
|
75
|
-
version:
|
89
|
+
version: '2.8'
|
76
90
|
type: :development
|
77
91
|
prerelease: false
|
78
92
|
version_requirements: !ruby/object:Gem::Requirement
|
79
93
|
requirements:
|
80
94
|
- - "~>"
|
81
95
|
- !ruby/object:Gem::Version
|
82
|
-
version:
|
96
|
+
version: '2.8'
|
83
97
|
- !ruby/object:Gem::Dependency
|
84
98
|
name: timecop
|
85
99
|
requirement: !ruby/object:Gem::Requirement
|
@@ -94,6 +108,20 @@ dependencies:
|
|
94
108
|
- - "~>"
|
95
109
|
- !ruby/object:Gem::Version
|
96
110
|
version: '0.9'
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: webmock
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - "~>"
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '3.14'
|
118
|
+
type: :development
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - "~>"
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: '3.14'
|
97
125
|
- !ruby/object:Gem::Dependency
|
98
126
|
name: opentracing
|
99
127
|
requirement: !ruby/object:Gem::Requirement
|
@@ -129,11 +157,12 @@ executables: []
|
|
129
157
|
extensions: []
|
130
158
|
extra_rdoc_files: []
|
131
159
|
files:
|
160
|
+
- ".github/workflows/ci.yml"
|
132
161
|
- ".gitignore"
|
133
162
|
- ".gitmodules"
|
134
163
|
- ".rspec"
|
135
164
|
- ".rubocop.yml"
|
136
|
-
- ".
|
165
|
+
- ".rubocop_todo.yml"
|
137
166
|
- Gemfile
|
138
167
|
- LICENSE.txt
|
139
168
|
- Makefile
|
@@ -156,6 +185,7 @@ files:
|
|
156
185
|
- lib/jaeger/http_sender.rb
|
157
186
|
- lib/jaeger/injectors.rb
|
158
187
|
- lib/jaeger/rate_limiter.rb
|
188
|
+
- lib/jaeger/recurring_executor.rb
|
159
189
|
- lib/jaeger/reporters.rb
|
160
190
|
- lib/jaeger/reporters/composite_reporter.rb
|
161
191
|
- lib/jaeger/reporters/in_memory_reporter.rb
|
@@ -169,14 +199,16 @@ files:
|
|
169
199
|
- lib/jaeger/samplers/per_operation.rb
|
170
200
|
- lib/jaeger/samplers/probabilistic.rb
|
171
201
|
- lib/jaeger/samplers/rate_limiting.rb
|
202
|
+
- lib/jaeger/samplers/remote_controlled.rb
|
203
|
+
- lib/jaeger/samplers/remote_controlled/instructions_fetcher.rb
|
172
204
|
- lib/jaeger/scope.rb
|
173
205
|
- lib/jaeger/scope_manager.rb
|
174
206
|
- lib/jaeger/scope_manager/scope_identifier.rb
|
175
207
|
- lib/jaeger/scope_manager/scope_stack.rb
|
176
208
|
- lib/jaeger/span.rb
|
177
209
|
- lib/jaeger/span/thrift_log_builder.rb
|
178
|
-
- lib/jaeger/span/thrift_tag_builder.rb
|
179
210
|
- lib/jaeger/span_context.rb
|
211
|
+
- lib/jaeger/thrift_tag_builder.rb
|
180
212
|
- lib/jaeger/trace_id.rb
|
181
213
|
- lib/jaeger/tracer.rb
|
182
214
|
- lib/jaeger/udp_sender.rb
|
@@ -201,7 +233,8 @@ files:
|
|
201
233
|
homepage: https://github.com/salemove/jaeger-client-ruby
|
202
234
|
licenses:
|
203
235
|
- MIT
|
204
|
-
metadata:
|
236
|
+
metadata:
|
237
|
+
rubygems_mfa_required: 'true'
|
205
238
|
post_install_message:
|
206
239
|
rdoc_options: []
|
207
240
|
require_paths:
|
@@ -210,15 +243,17 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
210
243
|
requirements:
|
211
244
|
- - ">="
|
212
245
|
- !ruby/object:Gem::Version
|
213
|
-
version: '
|
246
|
+
version: '2.7'
|
247
|
+
- - "<"
|
248
|
+
- !ruby/object:Gem::Version
|
249
|
+
version: '3.2'
|
214
250
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
215
251
|
requirements:
|
216
252
|
- - ">="
|
217
253
|
- !ruby/object:Gem::Version
|
218
254
|
version: '0'
|
219
255
|
requirements: []
|
220
|
-
|
221
|
-
rubygems_version: 2.7.7
|
256
|
+
rubygems_version: 3.1.4
|
222
257
|
signing_key:
|
223
258
|
specification_version: 4
|
224
259
|
summary: OpenTracing Tracer implementation for Jaeger in Ruby
|
data/.travis.yml
DELETED
@@ -1,43 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Jaeger
|
4
|
-
class Span
|
5
|
-
class ThriftTagBuilder
|
6
|
-
FIELDS = Jaeger::Thrift::Tag::FIELDS
|
7
|
-
KEY = FIELDS[Jaeger::Thrift::Tag::KEY].fetch(:name)
|
8
|
-
VTYPE = FIELDS[Jaeger::Thrift::Tag::VTYPE].fetch(:name)
|
9
|
-
VLONG = FIELDS[Jaeger::Thrift::Tag::VLONG].fetch(:name)
|
10
|
-
VDOUBLE = FIELDS[Jaeger::Thrift::Tag::VDOUBLE].fetch(:name)
|
11
|
-
VBOOL = FIELDS[Jaeger::Thrift::Tag::VBOOL].fetch(:name)
|
12
|
-
VSTR = FIELDS[Jaeger::Thrift::Tag::VSTR].fetch(:name)
|
13
|
-
|
14
|
-
def self.build(key, value)
|
15
|
-
if value.is_a?(Integer)
|
16
|
-
Jaeger::Thrift::Tag.new(
|
17
|
-
KEY => key.to_s,
|
18
|
-
VTYPE => Jaeger::Thrift::TagType::LONG,
|
19
|
-
VLONG => value
|
20
|
-
)
|
21
|
-
elsif value.is_a?(Float)
|
22
|
-
Jaeger::Thrift::Tag.new(
|
23
|
-
KEY => key.to_s,
|
24
|
-
VTYPE => Jaeger::Thrift::TagType::DOUBLE,
|
25
|
-
VDOUBLE => value
|
26
|
-
)
|
27
|
-
elsif value.is_a?(TrueClass) || value.is_a?(FalseClass)
|
28
|
-
Jaeger::Thrift::Tag.new(
|
29
|
-
KEY => key.to_s,
|
30
|
-
VTYPE => Jaeger::Thrift::TagType::BOOL,
|
31
|
-
VBOOL => value
|
32
|
-
)
|
33
|
-
else
|
34
|
-
Jaeger::Thrift::Tag.new(
|
35
|
-
KEY => key.to_s,
|
36
|
-
VTYPE => Jaeger::Thrift::TagType::STRING,
|
37
|
-
VSTR => value.to_s
|
38
|
-
)
|
39
|
-
end
|
40
|
-
end
|
41
|
-
end
|
42
|
-
end
|
43
|
-
end
|