finagle-thrift 1.3.1 → 1.4.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.
@@ -131,6 +131,44 @@ module FinagleThrift
|
|
131
131
|
::Thrift::Struct.generate_accessors self
|
132
132
|
end
|
133
133
|
|
134
|
+
# This struct serializes com.twitter.finagle.Context
|
135
|
+
class RequestContext
|
136
|
+
include ::Thrift::Struct, ::Thrift::Struct_Union
|
137
|
+
KEY = 1
|
138
|
+
VALUE = 2
|
139
|
+
|
140
|
+
FIELDS = {
|
141
|
+
KEY => {:type => ::Thrift::Types::STRING, :name => 'key', :binary => true},
|
142
|
+
VALUE => {:type => ::Thrift::Types::STRING, :name => 'value', :binary => true}
|
143
|
+
}
|
144
|
+
|
145
|
+
def struct_fields; FIELDS; end
|
146
|
+
|
147
|
+
def validate
|
148
|
+
end
|
149
|
+
|
150
|
+
::Thrift::Struct.generate_accessors self
|
151
|
+
end
|
152
|
+
|
153
|
+
# Serializes an individual delegation.
|
154
|
+
class Delegation
|
155
|
+
include ::Thrift::Struct, ::Thrift::Struct_Union
|
156
|
+
SRC = 1
|
157
|
+
DST = 2
|
158
|
+
|
159
|
+
FIELDS = {
|
160
|
+
SRC => {:type => ::Thrift::Types::STRING, :name => 'src'},
|
161
|
+
DST => {:type => ::Thrift::Types::STRING, :name => 'dst'}
|
162
|
+
}
|
163
|
+
|
164
|
+
def struct_fields; FIELDS; end
|
165
|
+
|
166
|
+
def validate
|
167
|
+
end
|
168
|
+
|
169
|
+
::Thrift::Struct.generate_accessors self
|
170
|
+
end
|
171
|
+
|
134
172
|
# RequestHeader defines headers for the request. These carry the span data, and
|
135
173
|
# a flag indicating whether the request is to be debugged.
|
136
174
|
class RequestHeader
|
@@ -141,6 +179,9 @@ module FinagleThrift
|
|
141
179
|
SAMPLED = 5
|
142
180
|
CLIENT_ID = 6
|
143
181
|
FLAGS = 7
|
182
|
+
CONTEXTS = 8
|
183
|
+
DEST = 9
|
184
|
+
DELEGATIONS = 10
|
144
185
|
|
145
186
|
FIELDS = {
|
146
187
|
TRACE_ID => {:type => ::Thrift::Types::I64, :name => 'trace_id'},
|
@@ -148,7 +189,10 @@ module FinagleThrift
|
|
148
189
|
PARENT_SPAN_ID => {:type => ::Thrift::Types::I64, :name => 'parent_span_id', :optional => true},
|
149
190
|
SAMPLED => {:type => ::Thrift::Types::BOOL, :name => 'sampled', :optional => true},
|
150
191
|
CLIENT_ID => {:type => ::Thrift::Types::STRUCT, :name => 'client_id', :class => FinagleThrift::ClientId, :optional => true},
|
151
|
-
FLAGS => {:type => ::Thrift::Types::I64, :name => 'flags', :optional => true}
|
192
|
+
FLAGS => {:type => ::Thrift::Types::I64, :name => 'flags', :optional => true},
|
193
|
+
CONTEXTS => {:type => ::Thrift::Types::LIST, :name => 'contexts', :element => {:type => ::Thrift::Types::STRUCT, :class => FinagleThrift::RequestContext}},
|
194
|
+
DEST => {:type => ::Thrift::Types::STRING, :name => 'dest', :optional => true},
|
195
|
+
DELEGATIONS => {:type => ::Thrift::Types::LIST, :name => 'delegations', :element => {:type => ::Thrift::Types::STRUCT, :class => FinagleThrift::Delegation}, :optional => true}
|
152
196
|
}
|
153
197
|
|
154
198
|
def struct_fields; FIELDS; end
|
@@ -165,9 +209,11 @@ module FinagleThrift
|
|
165
209
|
class ResponseHeader
|
166
210
|
include ::Thrift::Struct, ::Thrift::Struct_Union
|
167
211
|
SPANS = 1
|
212
|
+
CONTEXTS = 2
|
168
213
|
|
169
214
|
FIELDS = {
|
170
|
-
SPANS => {:type => ::Thrift::Types::LIST, :name => 'spans', :element => {:type => ::Thrift::Types::STRUCT, :class => FinagleThrift::Span}}
|
215
|
+
SPANS => {:type => ::Thrift::Types::LIST, :name => 'spans', :element => {:type => ::Thrift::Types::STRUCT, :class => FinagleThrift::Span}},
|
216
|
+
CONTEXTS => {:type => ::Thrift::Types::LIST, :name => 'contexts', :element => {:type => ::Thrift::Types::STRUCT, :class => FinagleThrift::RequestContext}}
|
171
217
|
}
|
172
218
|
|
173
219
|
def struct_fields; FIELDS; end
|
data/lib/finagle-thrift/trace.rb
CHANGED
@@ -2,6 +2,7 @@ module Trace
|
|
2
2
|
extend self
|
3
3
|
DEFAULT_SAMPLE_RATE = 0.001
|
4
4
|
TRACE_ID_UPPER_BOUND = 2 ** 64
|
5
|
+
TRACE_STACK = :trace_stack
|
5
6
|
|
6
7
|
def id
|
7
8
|
if stack.empty?
|
@@ -33,7 +34,7 @@ module Trace
|
|
33
34
|
saved_stack = stack.dup
|
34
35
|
yield
|
35
36
|
ensure
|
36
|
-
|
37
|
+
stack = saved_stack
|
37
38
|
end
|
38
39
|
end
|
39
40
|
end
|
@@ -85,11 +86,11 @@ module Trace
|
|
85
86
|
"TraceId(trace_id = #{@trace_id.to_s}, parent_id = #{@parent_id.to_s}, span_id = #{@span_id.to_s}, sampled = #{@sampled.to_s}, flags = #{@flags.to_s})"
|
86
87
|
end
|
87
88
|
end
|
88
|
-
|
89
|
+
|
89
90
|
# there are a total of 64 flags that can be passed down with the various tracing headers
|
90
91
|
# at the time of writing only one is used (debug).
|
91
92
|
#
|
92
|
-
# Note that using the 64th bit in Ruby requires some sign conversion since Thrift i64s are signed
|
93
|
+
# Note that using the 64th bit in Ruby requires some sign conversion since Thrift i64s are signed
|
93
94
|
# but Ruby won't do the right thing if you try to set 1 << 64
|
94
95
|
class Flags
|
95
96
|
# no flags set
|
@@ -146,8 +147,14 @@ module Trace
|
|
146
147
|
|
147
148
|
private
|
148
149
|
|
150
|
+
# "stack" acts as a thread local variable and cannot be shared between
|
151
|
+
# threads.
|
152
|
+
def stack=(stack)
|
153
|
+
Thread.current[TRACE_STACK] = stack
|
154
|
+
end
|
155
|
+
|
149
156
|
def stack
|
150
|
-
|
157
|
+
Thread.current[TRACE_STACK] ||= []
|
151
158
|
end
|
152
159
|
|
153
160
|
def tracer
|
@@ -181,8 +181,14 @@ module Trace
|
|
181
181
|
DOUBLE = "DOUBLE"
|
182
182
|
STRING = "STRING"
|
183
183
|
|
184
|
-
|
185
|
-
|
184
|
+
if {}.respond_to?(:key)
|
185
|
+
def self.to_thrift(v)
|
186
|
+
FinagleThrift::AnnotationType::VALUE_MAP.key(v)
|
187
|
+
end
|
188
|
+
else
|
189
|
+
def self.to_thrift(v)
|
190
|
+
FinagleThrift::AnnotationType::VALUE_MAP.index(v)
|
191
|
+
end
|
186
192
|
end
|
187
193
|
end
|
188
194
|
|
@@ -245,4 +251,4 @@ module Trace
|
|
245
251
|
end
|
246
252
|
end
|
247
253
|
|
248
|
-
end
|
254
|
+
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: finagle-thrift
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 5
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 1
|
8
|
-
-
|
8
|
+
- 4
|
9
9
|
- 1
|
10
|
-
version: 1.
|
10
|
+
version: 1.4.1
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Arya Asemanfar
|
@@ -15,7 +15,8 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date:
|
18
|
+
date: 2015-06-19 00:00:00 -07:00
|
19
|
+
default_executable:
|
19
20
|
dependencies: []
|
20
21
|
|
21
22
|
description: A Ruby client library for integrating into finagle's thrift tracing protocol
|
@@ -36,9 +37,10 @@ files:
|
|
36
37
|
- lib/finagle-thrift/tracer.rb
|
37
38
|
- lib/finagle-thrift/version.rb
|
38
39
|
- lib/finagle-thrift.rb
|
40
|
+
has_rdoc: true
|
39
41
|
homepage:
|
40
|
-
licenses:
|
41
|
-
|
42
|
+
licenses:
|
43
|
+
- Apache License Version 2.0
|
42
44
|
post_install_message:
|
43
45
|
rdoc_options: []
|
44
46
|
|
@@ -67,7 +69,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
67
69
|
requirements: []
|
68
70
|
|
69
71
|
rubyforge_project:
|
70
|
-
rubygems_version: 1.
|
72
|
+
rubygems_version: 1.6.2
|
71
73
|
signing_key:
|
72
74
|
specification_version: 3
|
73
75
|
summary: ""
|