jaeger-client 0.6.0 → 0.6.1

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
- SHA1:
3
- metadata.gz: 6c3b896f0a1516378cf00ee5a08bc86b9766842a
4
- data.tar.gz: e7f411f2dd0850fd1d4267616c6e6cdda7766847
2
+ SHA256:
3
+ metadata.gz: 569f7aab000d228eac45be1f7d5831251b886ea0372c83f26d6eee58cb4aebbc
4
+ data.tar.gz: ce36d49763c06f2fbad18d69587c1c66c9f047bcdc24bcbdb7c1b7bc99fdb803
5
5
  SHA512:
6
- metadata.gz: 2f1d3b40879729e56de34b71bab0881d9c3d3afab4f11b523392a21392bfeb992e3a602c3cc7907d5f905eafd4f5130d27e4383602b8cc98e1053c2a49f12e5c
7
- data.tar.gz: e757205635c33ff2e40630c07746f0993fd234c00742ac1257ab5a914659394b45d24f3d5896f72ab7b3c2a3840383fdeb8d6790a53eff1b67506e2577175bf5
6
+ metadata.gz: 7c1e3bf462504c1f0b83dfe460d3001dcb45fb8dece53245f6b9d25a3065332f6a16bba3a425ffe34d74bef5ab0d67d5cd7caaafc36d9b930eab067040c88dbf
7
+ data.tar.gz: 0f9c0a1c60ccb748c3f50a63e01f28d2756f8485f35b4aa111544e596f19685f2200f0446962c56b17d2273c976f638ec7c00764fccd88fbbb73c5814dd8cee8
@@ -4,6 +4,7 @@ $LOAD_PATH.push(File.dirname(__FILE__) + '/../../thrift/gen-rb')
4
4
 
5
5
  require 'opentracing'
6
6
  require 'jaeger/thrift/agent'
7
+ require 'logger'
7
8
 
8
9
  require_relative 'client/tracer'
9
10
  require_relative 'client/span'
@@ -25,14 +26,16 @@ module Jaeger
25
26
  port: 6831,
26
27
  service_name:,
27
28
  flush_interval: DEFAULT_FLUSH_INTERVAL,
28
- sampler: Samplers::Const.new(true))
29
+ sampler: Samplers::Const.new(true),
30
+ logger: Logger.new(STDOUT))
29
31
  collector = Collector.new
30
32
  sender = UdpSender.new(
31
33
  service_name: service_name,
32
34
  host: host,
33
35
  port: port,
34
36
  collector: collector,
35
- flush_interval: flush_interval
37
+ flush_interval: flush_interval,
38
+ logger: logger
36
39
  )
37
40
  sender.start
38
41
  Tracer.new(collector, sender, sampler)
@@ -15,10 +15,10 @@ module Jaeger
15
15
  return if !context.sampled? && !context.debug?
16
16
 
17
17
  @buffer << Jaeger::Thrift::Span.new(
18
- 'traceIdLow' => context.trace_id,
18
+ 'traceIdLow' => TraceId.uint64_id_to_int64(context.trace_id),
19
19
  'traceIdHigh' => 0,
20
- 'spanId' => context.span_id,
21
- 'parentSpanId' => context.parent_id,
20
+ 'spanId' => TraceId.uint64_id_to_int64(context.span_id),
21
+ 'parentSpanId' => TraceId.uint64_id_to_int64(context.parent_id),
22
22
  'operationName' => span.operation_name,
23
23
  'references' => build_references(span.references || []),
24
24
  'flags' => context.flags,
@@ -43,15 +43,16 @@ module Jaeger
43
43
  @flags & Flags::DEBUG == Flags::DEBUG
44
44
  end
45
45
 
46
- def inspect
47
- to_s
46
+ def to_trace_id
47
+ @to_trace_id ||= @trace_id.to_s(16)
48
48
  end
49
49
 
50
- def to_s
51
- "#<SpanContext @span_id=#{span_id.to_s(16)} " \
52
- "@parent_id=#{parent_id.to_s(16)} " \
53
- "@trace_id=#{trace_id.to_s(16)} " \
54
- "@flags=#{flags}>"
50
+ def to_parent_id
51
+ @to_parent_id ||= @parent_id.zero? ? nil : @parent_id.to_s(16)
52
+ end
53
+
54
+ def to_span_id
55
+ @to_span_id ||= @span_id.to_s(16)
55
56
  end
56
57
  end
57
58
  end
@@ -3,11 +3,25 @@
3
3
  module Jaeger
4
4
  module Client
5
5
  module TraceId
6
- TRACE_ID_UPPER_BOUND = 2**63 - 1
6
+ MAX_64BIT_SIGNED_INT = (1 << 63) - 1
7
+ MAX_64BIT_UNSIGNED_INT = (1 << 64) - 1
8
+ TRACE_ID_UPPER_BOUND = MAX_64BIT_UNSIGNED_INT + 1
7
9
 
8
10
  def self.generate
9
11
  rand(TRACE_ID_UPPER_BOUND)
10
12
  end
13
+
14
+ def self.base16_hex_id_to_uint64(id)
15
+ return nil unless id
16
+ value = id.to_i(16)
17
+ value > MAX_64BIT_UNSIGNED_INT || value < 0 ? 0 : value
18
+ end
19
+
20
+ # Thrift defines ID fields as i64, which is signed, therefore we convert
21
+ # large IDs (> 2^63) to negative longs
22
+ def self.uint64_id_to_int64(id)
23
+ id > MAX_64BIT_SIGNED_INT ? id - MAX_64BIT_UNSIGNED_INT - 1 : id
24
+ end
11
25
  end
12
26
  end
13
27
  end
@@ -167,26 +167,20 @@ module Jaeger
167
167
  def parse_context(trace)
168
168
  return nil if !trace || trace == ''
169
169
 
170
- trace_arguments = trace.split(':').map { |arg| arg.to_i(16) }
170
+ trace_arguments = trace.split(':').map(&TraceId.method(:base16_hex_id_to_uint64))
171
171
  return nil if trace_arguments.size != 4
172
172
 
173
173
  trace_id, span_id, parent_id, flags = trace_arguments
174
174
  return nil if trace_id.zero? || span_id.zero?
175
175
 
176
176
  SpanContext.new(
177
- trace_id: to_signed_int(trace_id, 64),
178
- parent_id: to_signed_int(parent_id, 64),
179
- span_id: to_signed_int(span_id, 64),
177
+ trace_id: trace_id,
178
+ parent_id: parent_id,
179
+ span_id: span_id,
180
180
  flags: flags
181
181
  )
182
182
  end
183
183
 
184
- def to_signed_int(num, bits)
185
- # Using two's complement
186
- mask = 2**(bits - 1)
187
- (num & ~mask) - (num & mask)
188
- end
189
-
190
184
  def prepare_span_context(child_of:, references:, ignore_active_scope:)
191
185
  context =
192
186
  context_from_child_of(child_of) ||
@@ -7,10 +7,11 @@ require 'thread'
7
7
  module Jaeger
8
8
  module Client
9
9
  class UdpSender
10
- def initialize(service_name:, host:, port:, collector:, flush_interval:)
10
+ def initialize(service_name:, host:, port:, collector:, flush_interval:, logger:)
11
11
  @service_name = service_name
12
12
  @collector = collector
13
13
  @flush_interval = flush_interval
14
+ @logger = logger
14
15
 
15
16
  @tags = [
16
17
  Jaeger::Thrift::Tag.new(
@@ -67,6 +68,8 @@ module Jaeger
67
68
  )
68
69
 
69
70
  @client.emitBatch(batch)
71
+ rescue StandardError => error
72
+ @logger.error("Failure while sending a batch of spans: #{error}")
70
73
  end
71
74
  end
72
75
  end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Jaeger
4
4
  module Client
5
- VERSION = '0.6.0'.freeze
5
+ VERSION = '0.6.1'.freeze
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jaeger-client
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.0
4
+ version: 0.6.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - SaleMove TechMovers
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-07-01 00:00:00.000000000 Z
11
+ date: 2018-08-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -182,7 +182,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
182
182
  version: '0'
183
183
  requirements: []
184
184
  rubyforge_project:
185
- rubygems_version: 2.6.11
185
+ rubygems_version: 2.7.6
186
186
  signing_key:
187
187
  specification_version: 4
188
188
  summary: OpenTracing Tracer implementation for Jaeger in Ruby