class Datadog::RateByKeySampler
Samples at different rates by key.
Attributes
default_key[R]
Public Class Methods
new(default_key, default_rate = 1.0, &block)
click to toggle source
# File lib/ddtrace/sampler.rb, line 84 def initialize(default_key, default_rate = 1.0, &block) raise ArgumentError, 'No resolver given!' unless block @default_key = default_key @resolver = block @mutex = Mutex.new @samplers = {} set_rate(default_key, default_rate) end
Public Instance Methods
default_sampler()
click to toggle source
# File lib/ddtrace/sampler.rb, line 99 def default_sampler @samplers[default_key] end
delete(key)
click to toggle source
# File lib/ddtrace/sampler.rb, line 139 def delete(key) @mutex.synchronize do @samplers.delete(key) end end
delete_if(&block)
click to toggle source
# File lib/ddtrace/sampler.rb, line 145 def delete_if(&block) @mutex.synchronize do @samplers.delete_if(&block) end end
length()
click to toggle source
# File lib/ddtrace/sampler.rb, line 151 def length @samplers.length end
resolve(span)
click to toggle source
# File lib/ddtrace/sampler.rb, line 95 def resolve(span) @resolver.call(span) end
sample!(span)
click to toggle source
# File lib/ddtrace/sampler.rb, line 111 def sample!(span) key = resolve(span) @mutex.synchronize do @samplers.fetch(key, default_sampler).sample!(span) end end
sample?(span)
click to toggle source
# File lib/ddtrace/sampler.rb, line 103 def sample?(span) key = resolve(span) @mutex.synchronize do @samplers.fetch(key, default_sampler).sample?(span) end end
sample_rate(span)
click to toggle source
# File lib/ddtrace/sampler.rb, line 119 def sample_rate(span) key = resolve(span) @mutex.synchronize do @samplers.fetch(key, default_sampler).sample_rate end end
update(key, rate)
click to toggle source
# File lib/ddtrace/sampler.rb, line 127 def update(key, rate) @mutex.synchronize do set_rate(key, rate) end end
update_all(rate_by_key)
click to toggle source
# File lib/ddtrace/sampler.rb, line 133 def update_all(rate_by_key) @mutex.synchronize do rate_by_key.each { |key, rate| set_rate(key, rate) } end end
Private Instance Methods
set_rate(key, rate)
click to toggle source
# File lib/ddtrace/sampler.rb, line 157 def set_rate(key, rate) @samplers[key] ||= RateSampler.new(rate) @samplers[key].sample_rate = rate end