module RequestTracer::Trace
Constants
- TRACE_ID_UPPER_BOUND
- TRACE_STACK
Public Instance Methods
clear()
click to toggle source
# File lib/request_tracer/trace.rb, line 117 def clear stack.clear end
create()
click to toggle source
# File lib/request_tracer/trace.rb, line 83 def create span_id = generate_id TraceId.new(span_id, nil, span_id) end
generate_id()
click to toggle source
# File lib/request_tracer/trace.rb, line 140 def generate_id rand(TRACE_ID_UPPER_BOUND) end
latest()
click to toggle source
# File lib/request_tracer/trace.rb, line 88 def latest stack.last end
latest_or_create()
click to toggle source
# File lib/request_tracer/trace.rb, line 92 def latest_or_create latest || stack.push(create) end
pop()
click to toggle source
# File lib/request_tracer/trace.rb, line 113 def pop stack.pop end
push(trace_info) { || ... }
click to toggle source
# File lib/request_tracer/trace.rb, line 96 def push(trace_info) return yield unless trace_info trace = if trace_info.include?("trace_id") && trace_info.include?("span_id") TraceId.create(trace_info) else TraceId.spawn_from_hash(trace_info) end stack.push(trace) if block_given? begin yield trace ensure pop end end end
record(annotation = nil, &block)
click to toggle source
# File lib/request_tracer/trace.rb, line 132 def record(annotation = nil, &block) tracer.record((latest && latest.next_id) || create, annotation, &block) end
tracer=(tracer)
click to toggle source
# File lib/request_tracer/trace.rb, line 136 def tracer=(tracer) @tracer = tracer end
unwind() { || ... }
click to toggle source
# File lib/request_tracer/trace.rb, line 121 def unwind if block_given? begin saved_stack = stack.dup yield ensure stack = saved_stack end end end
Private Instance Methods
stack()
click to toggle source
# File lib/request_tracer/trace.rb, line 153 def stack Thread.current[TRACE_STACK] ||= [] end
stack=(stack)
click to toggle source
“stack” acts as a thread local variable and cannot be shared between threads.
# File lib/request_tracer/trace.rb, line 149 def stack=(stack) Thread.current[TRACE_STACK] = stack end
tracer()
click to toggle source
# File lib/request_tracer/trace.rb, line 157 def tracer @tracer ||= DefaultTracer.new end