Class: Judoscale::JobMetricsCollector

Inherits:
MetricsCollector show all
Includes:
Logger
Defined in:
lib/judoscale/job_metrics_collector.rb,
lib/judoscale/job_metrics_collector/active_record_helper.rb

Defined Under Namespace

Modules: ActiveRecordHelper

Class Method Summary collapse

Instance Method Summary collapse

Methods included from Logger

#logger

Methods inherited from MetricsCollector

#collect

Constructor Details

#initializeJobMetricsCollector

Returns a new instance of JobMetricsCollector.



27
28
29
30
31
32
33
# File 'lib/judoscale/job_metrics_collector.rb', line 27

def initialize
  super

  log_msg = "#{self.class.adapter_name} enabled"
  log_msg << " with busy job tracking support" if track_busy_jobs?
  logger.info log_msg
end

Class Method Details

.adapter_configObject



23
24
25
# File 'lib/judoscale/job_metrics_collector.rb', line 23

def self.adapter_config
  raise "Implement `self.adapter_config` in individual job metrics collectors."
end

.adapter_identifierObject



19
20
21
# File 'lib/judoscale/job_metrics_collector.rb', line 19

def self.adapter_identifier
  adapter_config.identifier
end

.adapter_nameObject



15
16
17
# File 'lib/judoscale/job_metrics_collector.rb', line 15

def self.adapter_name
  @_adapter_name ||= adapter_identifier.to_s.capitalize.gsub(/(?:_)(.)/i) { $1.upcase }
end

.collect?(config) ⇒ Boolean

Returns:

  • (Boolean)


11
12
13
# File 'lib/judoscale/job_metrics_collector.rb', line 11

def self.collect?(config)
  super && !config.current_runtime_container.redundant_instance? && adapter_config.enabled
end

Instance Method Details

#clear_queuesObject



45
46
47
# File 'lib/judoscale/job_metrics_collector.rb', line 45

def clear_queues
  @queues = nil
end

#queuesObject

Track the known queues so we can continue reporting on queues that don’t have enqueued jobs at the time of reporting.



37
38
39
# File 'lib/judoscale/job_metrics_collector.rb', line 37

def queues
  @queues ||= Set.new([])
end

#queues=(new_queues) ⇒ Object



41
42
43
# File 'lib/judoscale/job_metrics_collector.rb', line 41

def queues=(new_queues)
  @queues = filter_queues(new_queues)
end