Class: ScoutApm::JobRecord

Inherits:
Object
  • Object
show all
Defined in:
lib/scout_apm/job_record.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(queue_name, job_name, total_time, exclusive_time, errors, metrics) ⇒ JobRecord

Returns a new instance of JobRecord.



17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/scout_apm/job_record.rb', line 17

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

Instance Attribute Details

#errorsObject (readonly)

Returns the value of attribute errors.



14
15
16
# File 'lib/scout_apm/job_record.rb', line 14

def errors
  @errors
end

#exclusive_timeObject (readonly)

Returns the value of attribute exclusive_time.



13
14
15
# File 'lib/scout_apm/job_record.rb', line 13

def exclusive_time
  @exclusive_time
end

#job_nameObject (readonly)

Returns the value of attribute job_name.



11
12
13
# File 'lib/scout_apm/job_record.rb', line 11

def job_name
  @job_name
end

#metric_setObject (readonly)

Returns the value of attribute metric_set.



15
16
17
# File 'lib/scout_apm/job_record.rb', line 15

def metric_set
  @metric_set
end

#queue_nameObject (readonly)

Returns the value of attribute queue_name.



10
11
12
# File 'lib/scout_apm/job_record.rb', line 10

def queue_name
  @queue_name
end

#total_timeObject (readonly)

Returns the value of attribute total_time.



12
13
14
# File 'lib/scout_apm/job_record.rb', line 12

def total_time
  @total_time
end

Instance Method Details

#==(o) ⇒ Object

Hash Key interface



61
62
63
# File 'lib/scout_apm/job_record.rb', line 61

def ==(o)
  self.eql?(o)
end

#combine!(other) ⇒ Object

Modifies self and returns self, after merging in ‘other`.



34
35
36
37
38
39
40
41
42
43
44
45
46
# File 'lib/scout_apm/job_record.rb', line 34

def combine!(other)
  if !self.eql?(other)
    ScoutApm::Agent.instance.logger.debug("Mismatched Merge of Background Job: (Queue #{queue_name} == #{other.queue_name}) (Name #{job_name} == #{other.job_name}) (Hash #{hash} == #{other.hash})")
    return self
  end

  @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

#eql?(o) ⇒ Boolean

Returns:

  • (Boolean)


71
72
73
74
75
# File 'lib/scout_apm/job_record.rb', line 71

def eql?(o)
 self.class == o.class &&
   queue_name.downcase == o.queue_name.downcase &&
   job_name.downcase == o.job_name.downcase
end

#hashObject



65
66
67
68
69
# File 'lib/scout_apm/job_record.rb', line 65

def hash
  h = queue_name.downcase.hash
  h ^= job_name.downcase.hash
  h
end

#metricsObject



52
53
54
# File 'lib/scout_apm/job_record.rb', line 52

def metrics
  metric_set.metrics
end

#run_countObject



48
49
50
# File 'lib/scout_apm/job_record.rb', line 48

def run_count
  total_time.total
end