jaeger-client 0.6.0 → 0.6.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
- 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