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

Version Path
scout_apm-2.6.4 lib/scout_apm/job_record.rb
scout_apm-2.6.3 lib/scout_apm/job_record.rb
scout_apm-2.6.2 lib/scout_apm/job_record.rb
scout_apm-2.6.1 lib/scout_apm/job_record.rb
scout_apm-2.6.0 lib/scout_apm/job_record.rb
scout_apm-2.5.3 lib/scout_apm/job_record.rb
scout_apm-2.5.2 lib/scout_apm/job_record.rb
scout_apm-2.5.1 lib/scout_apm/job_record.rb
scout_apm-2.5.0 lib/scout_apm/job_record.rb
scout_apm-2.4.24 lib/scout_apm/job_record.rb
scout_apm-2.4.23 lib/scout_apm/job_record.rb
scout_apm-2.4.22 lib/scout_apm/job_record.rb
scout_apm-2.4.21 lib/scout_apm/job_record.rb
scout_apm-2.4.20 lib/scout_apm/job_record.rb
scout_apm-2.4.19 lib/scout_apm/job_record.rb
scout_apm-2.4.18 lib/scout_apm/job_record.rb
scout_apm-3.0.0.pre28 lib/scout_apm/job_record.rb
scout_apm-3.0.0.pre27 lib/scout_apm/job_record.rb
scout_apm-2.4.17 lib/scout_apm/job_record.rb
scout_apm-2.4.16 lib/scout_apm/job_record.rb