Class: Multiplayer::Utils::TraceIdRatioBasedSampler
- Inherits:
-
OpenTelemetry::SDK::Trace::Samplers::TraceIdRatioBased
- Object
- OpenTelemetry::SDK::Trace::Samplers::TraceIdRatioBased
- Multiplayer::Utils::TraceIdRatioBasedSampler
- Defined in:
- lib/multiplayer/utils/trace_id_ratio_based_sampler.rb
Instance Method Summary collapse
- #description ⇒ Object
-
#initialize(ratio = 0) ⇒ TraceIdRatioBasedSampler
constructor
A new instance of TraceIdRatioBasedSampler.
- #is_mp_trace_id?(trace_id) ⇒ Boolean
- #should_sample?(trace_id:, parent_context:, links:, name:, kind:, attributes:) ⇒ Boolean
Constructor Details
#initialize(ratio = 0) ⇒ TraceIdRatioBasedSampler
Returns a new instance of TraceIdRatioBasedSampler.
6 7 8 9 10 |
# File 'lib/multiplayer/utils/trace_id_ratio_based_sampler.rb', line 6 def initialize(ratio = 0) @ratio = normalize(ratio) @upper_bound = (@ratio * 0xffffffff).floor super(@ratio) end |
Instance Method Details
#description ⇒ Object
27 28 29 |
# File 'lib/multiplayer/utils/trace_id_ratio_based_sampler.rb', line 27 def description "MultiplayerTraceIdRatioBasedSampler#{@ratio}" end |
#is_mp_trace_id?(trace_id) ⇒ Boolean
21 22 23 24 25 |
# File 'lib/multiplayer/utils/trace_id_ratio_based_sampler.rb', line 21 def is_mp_trace_id?(trace_id) trace_id.start_with?(MULTIPLAYER_TRACE_DEBUG_PREFIX) || trace_id.start_with?(MULTIPLAYER_TRACE_DOC_PREFIX) || (self.valid_trace_id?(trace_id) && self.accumulate(trace_id) < @upper_bound) end |
#should_sample?(trace_id:, parent_context:, links:, name:, kind:, attributes:) ⇒ Boolean
12 13 14 15 16 17 18 19 |
# File 'lib/multiplayer/utils/trace_id_ratio_based_sampler.rb', line 12 def should_sample?(trace_id:, parent_context:, links:, name:, kind:, attributes:) tracestate = OpenTelemetry::Trace.current_span(parent_context).context.tracestate if self.is_mp_trace_id?(trace_id.unpack1("H*")) OpenTelemetry::SDK::Trace::Samplers::Result.new(decision: OpenTelemetry::SDK::Trace::Samplers::Decision::RECORD_AND_SAMPLE, tracestate: tracestate) else OpenTelemetry::SDK::Trace::Samplers::Result.new(decision: OpenTelemetry::SDK::Trace::Samplers::Decision::DROP, tracestate: tracestate) end end |