lightstep 0.11.2 → 0.12.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 +5 -5
- data/Gemfile +1 -0
- data/Makefile +3 -3
- data/benchmark/bench.rb +1 -1
- data/benchmark/threading/thread_test.rb +1 -1
- data/examples/rack/inject_extract.rb +3 -2
- data/lib/lightstep/span.rb +14 -6
- data/lib/lightstep/tracer.rb +22 -17
- data/lib/lightstep/version.rb +1 -1
- data/lightstep.gemspec +1 -1
- metadata +5 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 4061236d2e72a5a8af39a92ee36074193a9dfe0bd48032cdecdfcc3d01054557
|
4
|
+
data.tar.gz: ff20651fafa157cfeeecc789c73fb4a0c5dc4abbe910ef048625a39286251f6f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0f7b6a24656af8708d935b7afa2e47f5f7ee3fcd768518679450326140b6ead0ef1191718a487f3bed035eec99f8a263edc1d04b1fb18ea9c05b126ad23a0f88
|
7
|
+
data.tar.gz: 23bb222bae518baa0bf4151883b9cc525cc6226d485fff7bce7cc13c12b4d7ea3a41821ba30bec0f7a19438b1a2bed039aabed27a947799613f9cf91e8eaff6b
|
data/Gemfile
CHANGED
data/Makefile
CHANGED
@@ -14,10 +14,10 @@ benchmark:
|
|
14
14
|
ruby benchmark/threading/thread_test.rb
|
15
15
|
|
16
16
|
bump-version:
|
17
|
-
ruby -e 'require "bump"; Bump::Bump.run("
|
18
|
-
make build # rebuild after version increment
|
17
|
+
# ruby -e 'require "bump"; Bump::Bump.run("minor")'
|
18
|
+
# make build # rebuild after version increment
|
19
19
|
git tag `ruby scripts/version.rb`
|
20
|
-
git push
|
20
|
+
# git push
|
21
21
|
git push --tags
|
22
22
|
|
23
23
|
publish: build test benchmark bump-version
|
data/benchmark/bench.rb
CHANGED
@@ -53,7 +53,7 @@ Benchmark.bm(32) do |x|
|
|
53
53
|
span = tracer.start_span('my_span')
|
54
54
|
for i in 0..10_000
|
55
55
|
carrier = {}
|
56
|
-
tracer.inject(span.span_context,
|
56
|
+
tracer.inject(span.span_context, OpenTracing::FORMAT_TEXT_MAP, carrier)
|
57
57
|
end
|
58
58
|
span.finish
|
59
59
|
end
|
@@ -16,7 +16,7 @@ watchThread = Thread.new do
|
|
16
16
|
sleep(0.5)
|
17
17
|
mutex.lock
|
18
18
|
time_per_span = (1e6 * (total_time.to_f / span_count.to_f)).round(2)
|
19
|
-
puts "#{span_count} spans #{percent_done}% done #{total_time.round(2)} seconds (#{time_per_span}
|
19
|
+
puts "#{span_count} spans #{percent_done}% done #{total_time.round(2)} seconds (#{time_per_span} µs/span)"
|
20
20
|
is_done = done
|
21
21
|
mutex.unlock
|
22
22
|
Thread.exit if is_done
|
@@ -1,5 +1,6 @@
|
|
1
1
|
require 'bundler/setup'
|
2
2
|
require 'lightstep'
|
3
|
+
require 'opentracing'
|
3
4
|
|
4
5
|
require 'rack'
|
5
6
|
require 'rack/server'
|
@@ -19,7 +20,7 @@ class Router
|
|
19
20
|
|
20
21
|
client = Net::HTTP.new("localhost", "9002")
|
21
22
|
req = Net::HTTP::Post.new("/")
|
22
|
-
@tracer.inject(span.span_context,
|
23
|
+
@tracer.inject(span.span_context, OpenTracing::FORMAT_RACK, req)
|
23
24
|
res = client.request(req)
|
24
25
|
|
25
26
|
span.log(event: "application_response", response: res.to_s)
|
@@ -36,7 +37,7 @@ class App
|
|
36
37
|
end
|
37
38
|
|
38
39
|
def call(env)
|
39
|
-
wire_ctx = @tracer.extract(
|
40
|
+
wire_ctx = @tracer.extract(OpenTracing::FORMAT_RACK, env)
|
40
41
|
span = @tracer.start_span("app_call", child_of: wire_ctx)
|
41
42
|
puts "child #{span.to_h[:trace_guid]}"
|
42
43
|
span.log(event: "application", env: env)
|
data/lib/lightstep/span.rb
CHANGED
@@ -19,6 +19,10 @@ module LightStep
|
|
19
19
|
# @param operation_name [String] the operation name of this span. If it's
|
20
20
|
# not a String it will be encoded with to_s.
|
21
21
|
# @param child_of [SpanContext] the parent SpanContext (per child_of)
|
22
|
+
# @param references [Array<SpanContext>] An array of SpanContexts
|
23
|
+
# that identify what Spans this Span follows from causally. Presently
|
24
|
+
# only one reference is supported, and cannot be provided in addition to
|
25
|
+
# a child_of.
|
22
26
|
# @param start_micros [Numeric] start time of the span in microseconds
|
23
27
|
# @param tags [Hash] initial key:value tags (per set_tag) for the Span
|
24
28
|
# @param max_log_records [Numeric] maximum allowable number of log records
|
@@ -28,11 +32,11 @@ module LightStep
|
|
28
32
|
tracer:,
|
29
33
|
operation_name:,
|
30
34
|
child_of: nil,
|
35
|
+
references: [],
|
31
36
|
start_micros:,
|
32
37
|
tags: nil,
|
33
38
|
max_log_records:
|
34
39
|
)
|
35
|
-
child_of = child_of.span_context if (Span === child_of)
|
36
40
|
@tags = Concurrent::Hash.new
|
37
41
|
@tags.update(tags) unless tags.nil?
|
38
42
|
@log_records = Concurrent::Array.new
|
@@ -43,12 +47,16 @@ module LightStep
|
|
43
47
|
self.operation_name = operation_name.to_s
|
44
48
|
self.start_micros = start_micros
|
45
49
|
|
46
|
-
|
47
|
-
|
50
|
+
ref = child_of ? child_of : references
|
51
|
+
ref = ref[0] if (Array === ref)
|
52
|
+
ref = ref.span_context if (Span === ref)
|
48
53
|
|
49
|
-
if SpanContext ===
|
50
|
-
|
51
|
-
|
54
|
+
if SpanContext === ref
|
55
|
+
@span_context = SpanContext.new(id: LightStep.guid, trace_id: ref.trace_id)
|
56
|
+
set_baggage(ref.baggage)
|
57
|
+
set_tag(:parent_span_guid, ref.id)
|
58
|
+
else
|
59
|
+
@span_context = SpanContext.new(id: LightStep.guid, trace_id: LightStep.guid)
|
52
60
|
end
|
53
61
|
end
|
54
62
|
|
data/lib/lightstep/tracer.rb
CHANGED
@@ -1,6 +1,8 @@
|
|
1
1
|
require 'json'
|
2
2
|
require 'concurrent'
|
3
3
|
|
4
|
+
require 'opentracing'
|
5
|
+
|
4
6
|
require 'lightstep/span'
|
5
7
|
require 'lightstep/reporter'
|
6
8
|
require 'lightstep/transport/http_json'
|
@@ -9,10 +11,6 @@ require 'lightstep/transport/callback'
|
|
9
11
|
|
10
12
|
module LightStep
|
11
13
|
class Tracer
|
12
|
-
FORMAT_TEXT_MAP = 1
|
13
|
-
FORMAT_BINARY = 2
|
14
|
-
FORMAT_RACK = 3
|
15
|
-
|
16
14
|
class Error < LightStep::Error; end
|
17
15
|
class ConfigurationError < LightStep::Tracer::Error; end
|
18
16
|
|
@@ -61,14 +59,19 @@ module LightStep
|
|
61
59
|
# @param child_of [SpanContext] SpanContext that acts as a parent to
|
62
60
|
# the newly-started Span. If a Span instance is provided, its
|
63
61
|
# .span_context is automatically substituted.
|
62
|
+
# @param references [Array<SpanContext>] An array of SpanContexts that
|
63
|
+
# identify any parent SpanContexts of newly-started Span. If Spans
|
64
|
+
# are provided, their .span_context is automatically substituted.
|
64
65
|
# @param start_time [Time] When the Span started, if not now
|
65
66
|
# @param tags [Hash] Tags to assign to the Span at start time
|
66
67
|
# @return [Span]
|
67
|
-
def start_span(operation_name, child_of: nil, start_time: nil, tags: nil)
|
68
|
+
def start_span(operation_name, child_of: nil, references: [], start_time: nil, tags: nil)
|
69
|
+
|
68
70
|
Span.new(
|
69
71
|
tracer: self,
|
70
72
|
operation_name: operation_name,
|
71
73
|
child_of: child_of,
|
74
|
+
references: references,
|
72
75
|
start_micros: start_time.nil? ? LightStep.micros(Time.now) : LightStep.micros(start_time),
|
73
76
|
tags: tags,
|
74
77
|
max_log_records: max_log_records,
|
@@ -78,16 +81,15 @@ module LightStep
|
|
78
81
|
# Inject a SpanContext into the given carrier
|
79
82
|
#
|
80
83
|
# @param spancontext [SpanContext]
|
81
|
-
# @param format [
|
82
|
-
# @param carrier [
|
84
|
+
# @param format [OpenTracing::FORMAT_TEXT_MAP, OpenTracing::FORMAT_BINARY]
|
85
|
+
# @param carrier [Carrier] A carrier object of the type dictated by the specified `format`
|
83
86
|
def inject(span_context, format, carrier)
|
84
|
-
child_of = child_of.span_context if (Span === child_of)
|
85
87
|
case format
|
86
|
-
when
|
88
|
+
when OpenTracing::FORMAT_TEXT_MAP
|
87
89
|
inject_to_text_map(span_context, carrier)
|
88
|
-
when
|
90
|
+
when OpenTracing::FORMAT_BINARY
|
89
91
|
warn 'Binary inject format not yet implemented'
|
90
|
-
when
|
92
|
+
when OpenTracing::FORMAT_RACK
|
91
93
|
inject_to_rack(span_context, carrier)
|
92
94
|
else
|
93
95
|
warn 'Unknown inject format'
|
@@ -95,17 +97,17 @@ module LightStep
|
|
95
97
|
end
|
96
98
|
|
97
99
|
# Extract a SpanContext from a carrier
|
98
|
-
# @param format [
|
99
|
-
# @param carrier [
|
100
|
+
# @param format [OpenTracing::FORMAT_TEXT_MAP, OpenTracing::FORMAT_BINARY, OpenTracing::FORMAT_RACK]
|
101
|
+
# @param carrier [Carrier] A carrier object of the type dictated by the specified `format`
|
100
102
|
# @return [SpanContext] the extracted SpanContext or nil if none could be found
|
101
103
|
def extract(format, carrier)
|
102
104
|
case format
|
103
|
-
when
|
105
|
+
when OpenTracing::FORMAT_TEXT_MAP
|
104
106
|
extract_from_text_map(carrier)
|
105
|
-
when
|
107
|
+
when OpenTracing::FORMAT_BINARY
|
106
108
|
warn 'Binary join format not yet implemented'
|
107
109
|
nil
|
108
|
-
when
|
110
|
+
when OpenTracing::FORMAT_RACK
|
109
111
|
extract_from_rack(carrier)
|
110
112
|
else
|
111
113
|
warn 'Unknown join format'
|
@@ -151,7 +153,10 @@ module LightStep
|
|
151
153
|
raise ConfigurationError, "component_name must be a string" unless String === component_name
|
152
154
|
raise ConfigurationError, "component_name cannot be blank" if component_name.empty?
|
153
155
|
|
154
|
-
transport
|
156
|
+
if transport.nil? and !access_token.nil?
|
157
|
+
transport = Transport::HTTPJSON.new(access_token: access_token)
|
158
|
+
end
|
159
|
+
|
155
160
|
raise ConfigurationError, "you must provide an access token or a transport" if transport.nil?
|
156
161
|
raise ConfigurationError, "#{transport} is not a LightStep transport class" if !(LightStep::Transport::Base === transport)
|
157
162
|
|
data/lib/lightstep/version.rb
CHANGED
data/lightstep.gemspec
CHANGED
@@ -17,7 +17,7 @@ Gem::Specification.new do |spec|
|
|
17
17
|
spec.require_paths = ['lib']
|
18
18
|
|
19
19
|
spec.add_dependency 'concurrent-ruby', '~> 1.0'
|
20
|
-
spec.add_dependency 'opentracing', '~> 0.
|
20
|
+
spec.add_dependency 'opentracing', '~> 0.3'
|
21
21
|
spec.add_development_dependency 'rake', '~> 11.3'
|
22
22
|
spec.add_development_dependency 'rack', '~> 2.0'
|
23
23
|
spec.add_development_dependency 'rspec', '~> 3.0'
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: lightstep
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.12.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- bcronin
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2018-07-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: concurrent-ruby
|
@@ -30,14 +30,14 @@ dependencies:
|
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '0.
|
33
|
+
version: '0.3'
|
34
34
|
type: :runtime
|
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: '0.
|
40
|
+
version: '0.3'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: rake
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -179,7 +179,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
179
179
|
version: '0'
|
180
180
|
requirements: []
|
181
181
|
rubyforge_project:
|
182
|
-
rubygems_version: 2.
|
182
|
+
rubygems_version: 2.7.6
|
183
183
|
signing_key:
|
184
184
|
specification_version: 4
|
185
185
|
summary: LightStep OpenTracing Ruby bindings
|