Module: JobBoard::LatencySla

Defined in:
app/models/job_board/latency_sla.rb

Overview

Detects a queue's latency SLA from explicit configuration or from the within_* naming convention (e.g. "within_5_minutes" => 300).

Constant Summary collapse

UNITS =
{ "second" => 1, "minute" => 60, "hour" => 3600, "day" => 86400 }.freeze

Class Method Summary collapse

Class Method Details

.detect(queue_name) ⇒ Object

Seconds, or nil when the queue has no detectable SLA.



8
9
10
# File 'app/models/job_board/latency_sla.rb', line 8

def self.detect(queue_name)
  JobBoard.config.latency_warning_thresholds[queue_name.to_s] || from_name(queue_name)
end

.sort(queues) ⇒ Object

Queues with a detectable SLA first, strictest first; the rest alphabetical.



18
19
20
21
22
23
# File 'app/models/job_board/latency_sla.rb', line 18

def self.sort(queues)
  queues.sort_by do |queue|
    sla = detect(queue.name)
    [sla ? 0 : 1, sla || 0, queue.name]
  end
end

.threshold_for(queue_name) ⇒ Object

The latency-warning threshold: the detected SLA, else the global default.



13
14
15
# File 'app/models/job_board/latency_sla.rb', line 13

def self.threshold_for(queue_name)
  detect(queue_name) || JobBoard.config.latency_warning_threshold
end