class Sqreen::Ecosystem::Tracing::VirtualScopesHolder
Constants
- DISCARD_SIZE
- MAX_VIRTUAL_SCOPES
Public Class Methods
new(parent, cfg)
click to toggle source
# File lib/sqreen/ecosystem/tracing/sampling_configuration.rb, line 107 def initialize(parent, cfg) @parent = parent @cfg = cfg @virtual_scopes = {} @mutex = Mutex.new end
Public Instance Methods
[](qualifier)
click to toggle source
# File lib/sqreen/ecosystem/tracing/sampling_configuration.rb, line 114 def [](qualifier) return false unless @cfg['enabled'] @mutex.synchronize do sampler = @virtual_scopes[qualifier] return sampler if sampler @virtual_scopes[qualifier] = create_virtual(qualifier) end end
delete!(qualifier)
click to toggle source
# File lib/sqreen/ecosystem/tracing/sampling_configuration.rb, line 125 def delete!(qualifier) @virtual_scopes.delete(qualifier) end
Private Instance Methods
create_virtual(qualifier)
click to toggle source
# File lib/sqreen/ecosystem/tracing/sampling_configuration.rb, line 131 def create_virtual(qualifier) discard if @virtual_scopes.size >= MAX_VIRTUAL_SCOPES @virtual_scopes[qualifier] = SamplingConfiguration.build_sampler("#{@parent}@#{qualifier}", @cfg) end
discard()
click to toggle source
# File lib/sqreen/ecosystem/tracing/sampling_configuration.rb, line 138 def discard logger.info { "Discarding excess virtual scopes for scope '#{@parent}'" } discard_keys = @virtual_scopes.keys.sample(DISCARD_SIZE) @virtual_scopes.delete_if { |k, _v| discard_keys.include? k } end