Class: OpenTrace::Sampler
- Inherits:
-
Object
- Object
- OpenTrace::Sampler
- Defined in:
- lib/opentrace/sampler.rb
Constant Summary collapse
- MAX_BACKPRESSURE =
2^10 = 1024x reduction
10
Instance Method Summary collapse
- #backpressure_level ⇒ Object
- #decrease_backpressure! ⇒ Object
- #effective_rate(env = nil) ⇒ Object
- #increase_backpressure! ⇒ Object
-
#initialize(config) ⇒ Sampler
constructor
A new instance of Sampler.
- #sample?(env = nil) ⇒ Boolean
Constructor Details
#initialize(config) ⇒ Sampler
Returns a new instance of Sampler.
7 8 9 10 |
# File 'lib/opentrace/sampler.rb', line 7 def initialize(config) @config = config @backpressure = 0 end |
Instance Method Details
#backpressure_level ⇒ Object
37 38 39 |
# File 'lib/opentrace/sampler.rb', line 37 def backpressure_level @backpressure end |
#decrease_backpressure! ⇒ Object
33 34 35 |
# File 'lib/opentrace/sampler.rb', line 33 def decrease_backpressure! @backpressure = [@backpressure - 1, 0].max end |
#effective_rate(env = nil) ⇒ Object
19 20 21 22 23 24 25 26 27 |
# File 'lib/opentrace/sampler.rb', line 19 def effective_rate(env = nil) base = if @config.sampler @config.sampler.call(env) rescue @config.sample_rate else @config.sample_rate end return base if @backpressure == 0 base / (1 << @backpressure) end |
#increase_backpressure! ⇒ Object
29 30 31 |
# File 'lib/opentrace/sampler.rb', line 29 def increase_backpressure! @backpressure = [@backpressure + 1, MAX_BACKPRESSURE].min end |
#sample?(env = nil) ⇒ Boolean
12 13 14 15 16 17 |
# File 'lib/opentrace/sampler.rb', line 12 def sample?(env = nil) rate = effective_rate(env) return true if rate >= 1.0 return false if rate <= 0.0 rand < rate end |