Sha256: 66e5d2925cf315e8893e34b93f8fbdd831e37638a9cfc855e25b5d0cd27b0207
Contents?: true
Size: 1.92 KB
Versions: 3
Compression:
Stored size: 1.92 KB
Contents
# encoding: utf-8 module OneApm module Agent class SamplerCollection include Enumerable def initialize(event_listener) @samplers = [] @event_listener = event_listener @event_listener.subscribe(:before_harvest) { poll_samplers } end def each(&blk) @samplers.each(&blk) end def clear() @samplers.clear end def sampler_class_registered?(sampler_class) self.any? { |s| s.class == sampler_class } end # adds samplers to the sampler collection so that they run every # minute. This is dynamically recognized by any class that # subclasses OneApm::Agent::Sampler def load_samplers Sampler.sampler_classes.each do |subclass| add_sampler(subclass) end end def poll_samplers @samplers.delete_if do |sampler| begin sampler.poll false rescue => e ::OneApm::Agent.logger.warn("Removing #{sampler} from list", e) true # remove the bad sampler end end end def add_sampler(sampler_class) supported = sampler_class.supported_on_this_platform? enabled = sampler_class.enabled? if supported && enabled && !sampler_class_registered?(sampler_class) sampler = sampler_class.new sampler.setup_events(@event_listener) if sampler.respond_to?(:setup_events) @samplers << sampler ::OneApm::Agent.logger.debug("Registered #{sampler_class.name} for harvest time sampling.") else ::OneApm::Agent.logger.debug("#{sampler_class.name} not supported on this platform.") end rescue OneApm::Agent::Sampler::Unsupported => e ::OneApm::Agent.logger.info("#{sampler_class.name} not available: #{e}") rescue => e ::OneApm::Agent.logger.error("Error registering sampler:", e) end end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
oneapm_rpm-1.1.2 | lib/one_apm/agent/sampler_collection.rb |
oneapm_rpm-1.1.1 | lib/one_apm/agent/sampler_collection.rb |
oneapm_rpm-1.1.0 | lib/one_apm/agent/sampler_collection.rb |