jaeger-client 0.7.1 → 0.8.0

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: 447a7b165ab77c10cd4d758f2e1ba0328251d9fd143966f406dd0a726d8c2ce0
4
- data.tar.gz: 6fce14b5c113ef4ad60e917d5085ecead91f00ce2a6baaf05878026f2ff04bcb
3
+ metadata.gz: 46d05119eb9543907c6e1182a80346da57b634623425a4eeb74e06d637b73799
4
+ data.tar.gz: 171cdd21fd1872db8d1adef226e901dffd595ed7eab76f8c99f902363b638f9d
5
5
  SHA512:
6
- metadata.gz: fc5eac14ee4471ac96daec09e5a5bd84a9e9ef86133480339d91e7490bc13b82fa127d3421036fc22c41c0dc49542cef5a6327c8fbab88f17b7bce3a117ee880
7
- data.tar.gz: b4df5beac2b6ff98ee6153e802edebc352de7b872105c9be332ddf5ad34b4818fce489aa987800f88f211505750146cd083d58709058b6d9d8204c6902a94447
6
+ metadata.gz: 756a18ecf9e931670df3a9058613a5af99a2391eceabfc7c7fdeea5a1371c12757f818fd71e8616d96aa3a544dc0a0cb7728d22b9f4ae7dfb62863f7f37f1c4e
7
+ data.tar.gz: e89a5e9ff633cca38e030b31cd7a9df68bfa7bcbebfbd5f68ad61a663d04ade3c517465e2b8fcc707afe80696d2aad330ac51caf14a32551788b08322cd4ee4b
@@ -0,0 +1,3 @@
1
+ [submodule "idl"]
2
+ path = idl
3
+ url = https://github.com/jaegertracing/jaeger-idl.git
@@ -1,5 +1,14 @@
1
1
  sudo: false
2
+
2
3
  language: ruby
3
4
  rvm:
4
- - 2.4.0
5
- before_install: gem install bundler -v 1.14.4
5
+ - 2.5.0
6
+
7
+ services:
8
+ - docker
9
+
10
+ before_install: gem install bundler -v 1.17.2
11
+
12
+ script:
13
+ - bundle exec rake
14
+ - make crossdock
@@ -0,0 +1 @@
1
+ -include crossdock/rules.mk
@@ -0,0 +1,29 @@
1
+ FROM ruby:2.5-alpine
2
+
3
+ ENV APP_HOME /app
4
+
5
+ # git is required by bundler to run jaeger gem with local path
6
+ RUN apk add --no-cache git
7
+
8
+ # Add only files needed for installing gem dependencies. This allows us to
9
+ # change other files without needing to install gems every time when building
10
+ # the docker image.
11
+ ADD Gemfile Gemfile.lock jaeger-client.gemspec $APP_HOME/
12
+ ADD lib/jaeger/client/version.rb $APP_HOME/lib/jaeger/client/
13
+ ADD crossdock/Gemfile crossdock/Gemfile.lock $APP_HOME/crossdock/
14
+
15
+ RUN apk add --no-cache --virtual .app-builddeps build-base \
16
+ && cd $APP_HOME && bundle install \
17
+ && cd $APP_HOME/crossdock && bundle install \
18
+ && apk del .app-builddeps
19
+
20
+ ADD . $APP_HOME
21
+
22
+ RUN chown -R nobody:nogroup $APP_HOME
23
+ USER nobody
24
+
25
+ WORKDIR $APP_HOME/crossdock
26
+
27
+ CMD ["bundle", "exec", "./server"]
28
+
29
+ EXPOSE 8080-8082
@@ -0,0 +1,6 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gem 'jaeger-client', path: '../'
4
+ gem 'rack'
5
+ gem 'sinatra'
6
+ gem 'webrick', '~> 1.4.2'
@@ -0,0 +1,35 @@
1
+ PATH
2
+ remote: ..
3
+ specs:
4
+ jaeger-client (0.7.1)
5
+ opentracing (~> 0.3)
6
+ thrift
7
+
8
+ GEM
9
+ remote: https://rubygems.org/
10
+ specs:
11
+ mustermann (1.0.3)
12
+ opentracing (0.4.3)
13
+ rack (2.0.6)
14
+ rack-protection (2.0.4)
15
+ rack
16
+ sinatra (2.0.4)
17
+ mustermann (~> 1.0)
18
+ rack (~> 2.0)
19
+ rack-protection (= 2.0.4)
20
+ tilt (~> 2.0)
21
+ thrift (0.11.0.0)
22
+ tilt (2.0.9)
23
+ webrick (1.4.2)
24
+
25
+ PLATFORMS
26
+ ruby
27
+
28
+ DEPENDENCIES
29
+ jaeger-client!
30
+ rack
31
+ sinatra
32
+ webrick (~> 1.4.2)
33
+
34
+ BUNDLED WITH
35
+ 1.16.2
@@ -0,0 +1,68 @@
1
+ version: '2'
2
+
3
+ services:
4
+ crossdock:
5
+ image: crossdock/crossdock
6
+ links:
7
+ - test_driver
8
+ - go
9
+ - python
10
+ - java
11
+ - ruby
12
+ environment:
13
+ - WAIT_FOR=test_driver,go,python,java,ruby
14
+ - WAIT_FOR_TIMEOUT=60s
15
+
16
+ - CALL_TIMEOUT=60s
17
+
18
+ - AXIS_CLIENT=go
19
+
20
+ - AXIS_S1NAME=go,python,java,ruby
21
+ - AXIS_SAMPLED=true,false
22
+ - AXIS_S2NAME=go,python,java,ruby
23
+ - AXIS_S2TRANSPORT=http
24
+ - AXIS_S3NAME=go,python,java,ruby
25
+ - AXIS_S3TRANSPORT=http
26
+
27
+ - BEHAVIOR_TRACE=client,s1name,sampled,s2name,s2transport,s3name,s3transport
28
+
29
+ - AXIS_TESTDRIVER=test_driver
30
+ - AXIS_SERVICES=ruby
31
+
32
+ - BEHAVIOR_ENDTOEND=testdriver,services
33
+
34
+ - REPORT=compact
35
+ go:
36
+ image: jaegertracing/xdock-go
37
+ ports:
38
+ - "8080-8082"
39
+
40
+ java:
41
+ image: jaegertracing/xdock-java
42
+ depends_on:
43
+ - jaeger-agent
44
+ ports:
45
+ - "8080-8082"
46
+
47
+ python:
48
+ image: jaegertracing/xdock-py
49
+ depends_on:
50
+ - jaeger-agent
51
+ ports:
52
+ - "8080-8082"
53
+
54
+ ruby:
55
+ build:
56
+ context: ../.
57
+ dockerfile: crossdock/Dockerfile
58
+ ports:
59
+ - "8080-8082"
60
+
61
+ test_driver:
62
+ image: jaegertracing/test-driver
63
+ depends_on:
64
+ - jaeger-query
65
+ - jaeger-collector
66
+ - jaeger-agent
67
+ ports:
68
+ - "8080"
@@ -0,0 +1,48 @@
1
+ version: '2'
2
+
3
+ services:
4
+ jaeger-collector:
5
+ image: jaegertracing/jaeger-collector
6
+ command: ["--cassandra.keyspace=jaeger_v1_dc1", "--cassandra.servers=cassandra", "--collector.zipkin.http-port=9411"]
7
+ ports:
8
+ - "14269"
9
+ - "14268:14268"
10
+ - "14267"
11
+ - "14250"
12
+ - "9411:9411"
13
+ restart: on-failure
14
+ depends_on:
15
+ - cassandra-schema
16
+
17
+ jaeger-query:
18
+ image: jaegertracing/jaeger-query
19
+ command: ["--cassandra.keyspace=jaeger_v1_dc1", "--cassandra.servers=cassandra"]
20
+ ports:
21
+ - "16686:16686"
22
+ - "16687"
23
+ restart: on-failure
24
+ depends_on:
25
+ - cassandra-schema
26
+
27
+ jaeger-agent:
28
+ image: jaegertracing/jaeger-agent
29
+ # FIXME temporarily switching back to tchannel
30
+ # https://github.com/jaegertracing/jaeger/issues/1229
31
+ command: ["--reporter.tchannel.host-port=jaeger-collector:14267"]
32
+ ports:
33
+ - "5775:5775/udp"
34
+ - "6831:6831/udp"
35
+ - "6832:6832/udp"
36
+ - "5778:5778"
37
+ restart: on-failure
38
+ depends_on:
39
+ - jaeger-collector
40
+
41
+ cassandra:
42
+ image: cassandra:3.9
43
+
44
+ cassandra-schema:
45
+ image: jaegertracing/jaeger-cassandra-schema
46
+ depends_on:
47
+ - cassandra
48
+
@@ -0,0 +1,35 @@
1
+ XDOCK_YAML=crossdock/docker-compose.yml
2
+ TRACETEST_THRIFT=idl/thrift/crossdock/tracetest.thrift
3
+ JAEGER_COMPOSE_URL=https://raw.githubusercontent.com/jaegertracing/jaeger/master/crossdock/jaeger-docker-compose.yml
4
+ XDOCK_JAEGER_YAML=crossdock/jaeger-docker-compose.yml
5
+
6
+ .PHONY: clean-compile
7
+ clean-compile:
8
+ find . -name '*.pyc' -exec rm {} \;
9
+
10
+ .PHONY: docker
11
+ docker: clean-compile crossdock-download-jaeger
12
+ docker build -f crossdock/Dockerfile -t jaeger-client-ruby .
13
+
14
+ .PHONY: crossdock
15
+ crossdock: ${TRACETEST_THRIFT} crossdock-download-jaeger
16
+ docker-compose -f $(XDOCK_YAML) -f $(XDOCK_JAEGER_YAML) kill ruby
17
+ docker-compose -f $(XDOCK_YAML) -f $(XDOCK_JAEGER_YAML) rm -f ruby
18
+ docker-compose -f $(XDOCK_YAML) -f $(XDOCK_JAEGER_YAML) build ruby
19
+ docker-compose -f $(XDOCK_YAML) -f $(XDOCK_JAEGER_YAML) run crossdock
20
+
21
+ .PHONY: crossdock-fresh
22
+ crossdock-fresh: ${TRACETEST_THRIFT} crossdock-download-jaeger
23
+ docker-compose -f $(XDOCK_YAML) -f $(XDOCK_JAEGER_YAML) kill
24
+ docker-compose -f $(XDOCK_YAML) -f $(XDOCK_JAEGER_YAML) rm --force
25
+ docker-compose -f $(XDOCK_YAML) -f $(XDOCK_JAEGER_YAML) pull
26
+ docker-compose -f $(XDOCK_YAML) -f $(XDOCK_JAEGER_YAML) build
27
+ docker-compose -f $(XDOCK_YAML) -f $(XDOCK_JAEGER_YAML) run crossdock
28
+
29
+ .PHONY: crossdock-logs crossdock-download-jaeger
30
+ crossdock-logs:
31
+ docker-compose -f $(XDOCK_YAML) -f $(XDOCK_JAEGER_YAML) logs
32
+
33
+ .PHONY: crossdock-download-jaeger
34
+ crossdock-download-jaeger:
35
+ curl -o $(XDOCK_JAEGER_YAML) $(JAEGER_COMPOSE_URL)
@@ -0,0 +1,173 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ $stdout.sync = true
4
+
5
+ require 'sinatra/base'
6
+ require 'webrick'
7
+ require 'jaeger/client'
8
+ require 'net/http'
9
+ require 'uri'
10
+
11
+ class HealthServer < Sinatra::Application
12
+ get '/' do
13
+ status 200
14
+ end
15
+ end
16
+
17
+ class HttpServer < Sinatra::Application
18
+ post '/start_trace' do
19
+ puts "Got request to start trace: #{trace_request}"
20
+
21
+ parent_context = tracer.extract(OpenTracing::FORMAT_RACK, request.env)
22
+ server_span = tracer.start_span('/start_trace', child_of: parent_context)
23
+
24
+ server_span.set_baggage_item('crossdock-baggage-key', trace_request['baggage'])
25
+ if trace_request.key?('sampled')
26
+ server_span.set_tag('sampling.priority', trace_request['sampled'] ? 1 : 0)
27
+ end
28
+
29
+ response = {
30
+ span: observe_span(server_span),
31
+ notImplementedError: ''
32
+ }
33
+
34
+ if trace_request['downstream']
35
+ downstream = trace_request['downstream']
36
+ transport = downstream['transport']
37
+
38
+ response[:downstream] =
39
+ if transport == 'HTTP'
40
+ call_downstream_http(downstream, server_span)
41
+ elsif transport == 'DUMMY'
42
+ { notImplementedError: 'Dummy has not been implemented' }
43
+ else
44
+ { notImplementedError: "Unrecognized transport received: #{transport}" }
45
+ end
46
+ end
47
+
48
+ puts "Response: #{response}"
49
+
50
+ server_span.finish
51
+ body JSON.dump(response)
52
+ end
53
+
54
+ post '/join_trace' do
55
+ puts 'Got request to join trace' \
56
+ "\n Params: #{trace_request}" \
57
+ "\n Headers: #{request_headers(request)}"
58
+
59
+ parent_context = tracer.extract(OpenTracing::FORMAT_RACK, request.env)
60
+ server_span = tracer.start_span('/join_trace', child_of: parent_context)
61
+
62
+ response = {
63
+ span: observe_span(server_span),
64
+ notImplementedError: ''
65
+ }
66
+
67
+ if trace_request['downstream']
68
+ downstream = trace_request['downstream']
69
+ transport = downstream['transport']
70
+
71
+ response[:downstream] =
72
+ if transport == 'HTTP'
73
+ call_downstream_http(downstream, server_span)
74
+ elsif transport == 'DUMMY'
75
+ { notImplementedError: 'Dummy has not been implemented' }
76
+ else
77
+ { notImplementedError: "Unrecognized transport received: #{transport}" }
78
+ end
79
+ end
80
+
81
+ puts "Response: #{response}"
82
+
83
+ server_span.finish
84
+ body JSON.dump(response)
85
+ end
86
+
87
+ post '/create_traces' do
88
+ puts "Got request to create traces: #{trace_request}"
89
+
90
+ trace_request['count'].times do
91
+ span = tracer.start_span(trace_request['operation'], tags: trace_request['tags'])
92
+ span.finish
93
+ end
94
+
95
+ status 200
96
+ end
97
+
98
+ private
99
+
100
+ def tracer
101
+ @tracer ||= Jaeger::Client.build(
102
+ service_name: 'crossdock-ruby',
103
+ host: 'jaeger-agent',
104
+ port: 6831,
105
+ flush_interval: 1,
106
+ sampler: Jaeger::Client::Samplers::Const.new(true)
107
+ )
108
+ end
109
+
110
+ def trace_request
111
+ @trace_request ||= begin
112
+ request.body.rewind
113
+ JSON.parse(request.body.read)
114
+ end
115
+ end
116
+
117
+ def observe_span(span)
118
+ if span
119
+ {
120
+ traceId: span.context.to_trace_id,
121
+ sampled: span.context.sampled?,
122
+ baggage: span.get_baggage_item('crossdock-baggage-key')
123
+ }
124
+ else
125
+ {
126
+ traceId: 'no span found',
127
+ sampled: false,
128
+ baggage: 'no span found'
129
+ }
130
+ end
131
+ end
132
+
133
+ def call_downstream_http(downstream, server_span)
134
+ downstream_url = "http://#{downstream['host']}:#{downstream['port']}/join_trace"
135
+
136
+ client_span = tracer.start_span('client-span', child_of: server_span)
137
+
138
+ headers = { 'Content-Type' => 'application/json' }
139
+ tracer.inject(client_span.context, OpenTracing::FORMAT_RACK, headers)
140
+
141
+ response = Net::HTTP.post(
142
+ URI(downstream_url),
143
+ JSON.dump(
144
+ serverRole: downstream['serverRole'],
145
+ downstream: downstream['downstream']
146
+ ),
147
+ headers
148
+ )
149
+
150
+ client_span.finish
151
+
152
+ if response.is_a?(Net::HTTPSuccess)
153
+ JSON.parse(response.body)
154
+ else
155
+ { error: response.body }
156
+ end
157
+ end
158
+
159
+ def request_headers(request)
160
+ request.env.select do |key, _value|
161
+ key.start_with?('HTTP_')
162
+ end
163
+ end
164
+ end
165
+
166
+ threads = []
167
+ threads << Thread.new do
168
+ Rack::Handler::WEBrick.run(HealthServer, Port: 8080, Host: '0.0.0.0')
169
+ end
170
+ threads << Thread.new do
171
+ Rack::Handler::WEBrick.run(HttpServer, Port: 8081, Host: '0.0.0.0')
172
+ end
173
+ threads.each(&:join)
@@ -8,21 +8,12 @@ module Jaeger
8
8
  module Client
9
9
  class AsyncReporter
10
10
  def self.create(sender:, flush_interval:)
11
- reporter = new(sender)
12
-
13
- # start flush thread
14
- Thread.new do
15
- loop do
16
- reporter.flush
17
- sleep(flush_interval)
18
- end
19
- end
20
-
21
- reporter
11
+ new(sender, flush_interval)
22
12
  end
23
13
 
24
- def initialize(sender)
14
+ def initialize(sender, flush_interval)
25
15
  @sender = sender
16
+ @flush_interval = flush_interval
26
17
  @buffer = Buffer.new
27
18
  end
28
19
 
@@ -34,8 +25,24 @@ module Jaeger
34
25
 
35
26
  def report(span)
36
27
  return if !span.context.sampled? && !span.context.debug?
28
+
29
+ init_reporter_thread
37
30
  @buffer << span
38
31
  end
32
+
33
+ private
34
+
35
+ def init_reporter_thread
36
+ return if @initializer_pid == Process.pid
37
+
38
+ @initializer_pid = Process.pid
39
+ Thread.new do
40
+ loop do
41
+ flush
42
+ sleep(@flush_interval)
43
+ end
44
+ end
45
+ end
39
46
  end
40
47
  end
41
48
  end
@@ -24,13 +24,36 @@ module Jaeger
24
24
 
25
25
  class JaegerTextMapCodec
26
26
  def self.extract(carrier)
27
- SerializedJaegerTrace.parse(carrier['uber-trace-id'])
27
+ context = SerializedJaegerTrace.parse(carrier['uber-trace-id'])
28
+ return nil unless context
29
+
30
+ carrier.each do |key, value|
31
+ baggage_match = key.match(/\Auberctx-([\w-]+)\Z/)
32
+ if baggage_match
33
+ context.set_baggage_item(baggage_match[1], value)
34
+ end
35
+ end
36
+
37
+ context
28
38
  end
29
39
  end
30
40
 
31
41
  class JaegerRackCodec
32
42
  def self.extract(carrier)
33
- SerializedJaegerTrace.parse(carrier['HTTP_UBER_TRACE_ID'])
43
+ serialized_trace = carrier['HTTP_UBER_TRACE_ID']
44
+ serialized_trace = CGI.unescape(serialized_trace) if serialized_trace
45
+ context = SerializedJaegerTrace.parse(serialized_trace)
46
+ return nil unless context
47
+
48
+ carrier.each do |key, value|
49
+ baggage_match = key.match(/\AHTTP_UBERCTX_(\w+)\Z/)
50
+ if baggage_match
51
+ key = baggage_match[1].downcase.tr('_', '-')
52
+ context.set_baggage_item(key, value)
53
+ end
54
+ end
55
+
56
+ context
34
57
  end
35
58
  end
36
59
 
@@ -3,14 +3,31 @@
3
3
  module Jaeger
4
4
  module Client
5
5
  module Injectors
6
+ def self.context_as_jaeger_string(span_context)
7
+ [
8
+ span_context.trace_id.to_s(16),
9
+ span_context.span_id.to_s(16),
10
+ span_context.parent_id.to_s(16),
11
+ span_context.flags.to_s(16)
12
+ ].join(':')
13
+ end
14
+
6
15
  class JaegerTextMapCodec
7
16
  def self.inject(span_context, carrier)
8
- carrier['uber-trace-id'] = [
9
- span_context.trace_id.to_s(16),
10
- span_context.span_id.to_s(16),
11
- span_context.parent_id.to_s(16),
12
- span_context.flags.to_s(16)
13
- ].join(':')
17
+ carrier['uber-trace-id'] = Injectors.context_as_jaeger_string(span_context)
18
+ span_context.baggage.each do |key, value|
19
+ carrier["uberctx-#{key}"] = value
20
+ end
21
+ end
22
+ end
23
+
24
+ class JaegerRackCodec
25
+ def self.inject(span_context, carrier)
26
+ carrier['uber-trace-id'] =
27
+ CGI.escape(Injectors.context_as_jaeger_string(span_context))
28
+ span_context.baggage.each do |key, value|
29
+ carrier["uberctx-#{key}"] = value
30
+ end
14
31
  end
15
32
  end
16
33
 
@@ -38,7 +55,7 @@ module Jaeger
38
55
  DEFAULT_INJECTORS = {
39
56
  OpenTracing::FORMAT_TEXT_MAP => JaegerTextMapCodec,
40
57
  OpenTracing::FORMAT_BINARY => JaegerBinaryCodec,
41
- OpenTracing::FORMAT_RACK => JaegerTextMapCodec
58
+ OpenTracing::FORMAT_RACK => JaegerRackCodec
42
59
  }.freeze
43
60
 
44
61
  def self.prepare(extractors)
@@ -23,8 +23,10 @@ module Jaeger
23
23
  @reporter = reporter
24
24
  @start_time = start_time
25
25
  @references = references
26
- @tags = tags.map { |key, value| ThriftTagBuilder.build(key, value) }
26
+ @tags = []
27
27
  @logs = []
28
+
29
+ tags.each { |key, value| set_tag(key, value) }
28
30
  end
29
31
 
30
32
  # Set a tag value on this span
@@ -33,8 +35,21 @@ module Jaeger
33
35
  # @param value [String, Numeric, Boolean] the value of the tag. If it's not
34
36
  # a String, Numeric, or Boolean it will be encoded with to_s
35
37
  def set_tag(key, value)
38
+ if key == 'sampling.priority'
39
+ if value.to_i > 0
40
+ return self if @context.debug?
41
+
42
+ @context.flags = @context.flags | SpanContext::Flags::SAMPLED | SpanContext::Flags::DEBUG
43
+ else
44
+ @context.flags = @context.flags & ~SpanContext::Flags::SAMPLED
45
+ end
46
+ return self
47
+ end
48
+
36
49
  # Using Thrift::Tag to avoid unnecessary memory allocations
37
50
  @tags << ThriftTagBuilder.build(key, value)
51
+
52
+ self
38
53
  end
39
54
 
40
55
  # Set a baggage item on the span
@@ -42,6 +57,7 @@ module Jaeger
42
57
  # @param key [String] the key of the baggage item
43
58
  # @param value [String] the value of the baggage item
44
59
  def set_baggage_item(key, value)
60
+ @context.set_baggage_item(key, value)
45
61
  self
46
62
  end
47
63
 
@@ -51,7 +67,7 @@ module Jaeger
51
67
  #
52
68
  # @return Value of the baggage item
53
69
  def get_baggage_item(key)
54
- nil
70
+ @context.get_baggage_item(key)
55
71
  end
56
72
 
57
73
  # Add a log entry to this span
@@ -18,14 +18,17 @@ module Jaeger
18
18
  end
19
19
 
20
20
  def self.create_from_parent_context(span_context)
21
- trace_id = span_context.trace_id
22
- parent_id = span_context.span_id
23
- flags = span_context.flags
24
- span_id = TraceId.generate
25
- new(span_id: span_id, parent_id: parent_id, trace_id: trace_id, flags: flags)
21
+ new(
22
+ trace_id: span_context.trace_id,
23
+ parent_id: span_context.span_id,
24
+ span_id: TraceId.generate,
25
+ flags: span_context.flags,
26
+ baggage: span_context.baggage.dup
27
+ )
26
28
  end
27
29
 
28
30
  attr_reader :span_id, :parent_id, :trace_id, :baggage, :flags
31
+ attr_writer :flags
29
32
 
30
33
  def initialize(span_id:, parent_id: 0, trace_id:, flags:, baggage: {})
31
34
  @span_id = span_id
@@ -47,13 +50,17 @@ module Jaeger
47
50
  @to_trace_id ||= @trace_id.to_s(16)
48
51
  end
49
52
 
50
- def to_parent_id
51
- @to_parent_id ||= @parent_id.zero? ? nil : @parent_id.to_s(16)
52
- end
53
-
54
53
  def to_span_id
55
54
  @to_span_id ||= @span_id.to_s(16)
56
55
  end
56
+
57
+ def set_baggage_item(key, value)
58
+ @baggage[key.to_s] = value.to_s
59
+ end
60
+
61
+ def get_baggage_item(key)
62
+ @baggage[key.to_s]
63
+ end
57
64
  end
58
65
  end
59
66
  end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Jaeger
4
4
  module Client
5
- VERSION = '0.7.1'.freeze
5
+ VERSION = '0.8.0'.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.7.1
4
+ version: 0.8.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: 2018-12-16 00:00:00.000000000 Z
11
+ date: 2018-12-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -116,15 +116,24 @@ extensions: []
116
116
  extra_rdoc_files: []
117
117
  files:
118
118
  - ".gitignore"
119
+ - ".gitmodules"
119
120
  - ".rspec"
120
121
  - ".rubocop.yml"
121
122
  - ".travis.yml"
122
123
  - Gemfile
123
124
  - LICENSE.txt
125
+ - Makefile
124
126
  - README.md
125
127
  - Rakefile
126
128
  - bin/console
127
129
  - bin/setup
130
+ - crossdock/Dockerfile
131
+ - crossdock/Gemfile
132
+ - crossdock/Gemfile.lock
133
+ - crossdock/docker-compose.yml
134
+ - crossdock/jaeger-docker-compose.yml
135
+ - crossdock/rules.mk
136
+ - crossdock/server
128
137
  - jaeger-client.gemspec
129
138
  - lib/jaeger/client.rb
130
139
  - lib/jaeger/client/async_reporter.rb