Sha256: 2a5bf1b30e5e7e973307fea1a6e8691d053be26e8ffc54c24323fa93c4ffdd8f
Contents?: true
Size: 1.7 KB
Versions: 137
Compression:
Stored size: 1.7 KB
Contents
# Records details about all runs of a given job. # # Contains: # Queue Name # Job Name # Job Runtime - histogram # Metrics collected during the run (Database, HTTP, View, etc) module ScoutApm class JobRecord attr_reader :queue_name attr_reader :job_name attr_reader :total_time attr_reader :exclusive_time attr_reader :errors attr_reader :metric_set def initialize(queue_name, job_name, total_time, exclusive_time, errors, metrics) @queue_name = queue_name @job_name = job_name @total_time = NumericHistogram.new(50) @total_time.add(total_time) @exclusive_time = NumericHistogram.new(50) @exclusive_time.add(exclusive_time) @errors = errors.to_i @metric_set = MetricSet.new @metric_set.absorb_all(metrics) end # Modifies self and returns self, after merging in `other`. def combine!(other) same_job = queue_name == other.queue_name && job_name == other.job_name raise "Mismatched Merge of Background Job" unless same_job @errors += other.errors @metric_set = metric_set.combine!(other.metric_set) @total_time.combine!(other.total_time) @exclusive_time.combine!(other.exclusive_time) self end def run_count total_time.total end def metrics metric_set.metrics end ###################### # Hash Key interface ###################### def ==(o) self.eql?(o) end def hash h = queue_name.downcase.hash h ^= job_name.downcase.hash h end def eql?(o) self.class == o.class && queue_name.downcase == o.queue_name.downcase && job_name.downcase == o.job_name.downcase end end end
Version data entries
137 entries across 137 versions & 1 rubygems