Class: OneApm::Collector::Samplers::DelayedJobSampler

Inherits:
OneApm::Collector::Sampler show all
Defined in:
lib/one_apm/collector/samplers/delayed_job_sampler.rb

Constant Summary collapse

OA_FAILED_QUERY =
'failed_at is not NULL'.freeze
OA_LOCKED_QUERY =
'locked_by is not NULL'.freeze

Instance Attribute Summary

Attributes inherited from OneApm::Collector::Sampler

#id

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from OneApm::Collector::Sampler

enabled?, inherited, name, named, sampler_classes

Constructor Details

#initializeDelayedJobSampler

Returns a new instance of DelayedJobSampler.

Raises:



16
17
18
19
20
# File 'lib/one_apm/collector/samplers/delayed_job_sampler.rb', line 16

def initialize
  raise Unsupported, "DJ queue sampler disabled" if OneApm::Manager.config[:disable_dj]
  raise Unsupported, "DJ queue sampling unsupported with backend '#{::Delayed::Worker.backend}'" unless self.class.supported_backend?
  raise Unsupported, "No DJ worker present. Skipping DJ queue sampler" unless OneApm::DelayedJobInjection.worker_name
end

Class Method Details

.supported_backend?Boolean

Returns:

  • (Boolean)


12
13
14
# File 'lib/one_apm/collector/samplers/delayed_job_sampler.rb', line 12

def self.supported_backend?
  ::Delayed::Worker.backend.to_s == "Delayed::Backend::ActiveRecord::Job"
end

.supported_on_this_platform?Boolean

Returns:

  • (Boolean)


49
50
51
# File 'lib/one_apm/collector/samplers/delayed_job_sampler.rb', line 49

def self.supported_on_this_platform?
  defined?(::Delayed::Job)
end

Instance Method Details

#count(query) ⇒ Object



41
42
43
44
45
46
47
# File 'lib/one_apm/collector/samplers/delayed_job_sampler.rb', line 41

def count(query)
  if ::ActiveRecord::VERSION::MAJOR.to_i < 4
    ::Delayed::Job.count(query)
  else
    ::Delayed::Job.where(query).count
  end
end

#failed_jobsObject



33
34
35
# File 'lib/one_apm/collector/samplers/delayed_job_sampler.rb', line 33

def failed_jobs
  count(OA_FAILED_QUERY)
end

#locked_jobsObject



37
38
39
# File 'lib/one_apm/collector/samplers/delayed_job_sampler.rb', line 37

def locked_jobs
  count(OA_LOCKED_QUERY)
end

#pollObject



53
54
55
56
57
# File 'lib/one_apm/collector/samplers/delayed_job_sampler.rb', line 53

def poll
  record_failed_jobs(failed_jobs)
  record_locked_jobs(locked_jobs)
  record_queue_length_metrics
end

#record_failed_jobs(value) ⇒ Object



22
23
24
# File 'lib/one_apm/collector/samplers/delayed_job_sampler.rb', line 22

def record_failed_jobs(value)
  OneApm::Manager.record_metric("Workers/DelayedJob/failed_jobs", value)
end

#record_locked_jobs(value) ⇒ Object



26
27
28
# File 'lib/one_apm/collector/samplers/delayed_job_sampler.rb', line 26

def record_locked_jobs(value)
  OneApm::Manager.record_metric("Workers/DelayedJob/locked_jobs", value)
end