Class: OpenTrace::Sampler

Inherits:
Object
  • Object
show all
Defined in:
lib/opentrace/sampler.rb

Constant Summary collapse

MAX_BACKPRESSURE =

2^10 = 1024x reduction

10

Instance Method Summary collapse

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_levelObject



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

Returns:

  • (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