Class: RoundhouseUi::Backends::SolidQueue
- Inherits:
-
Object
- Object
- RoundhouseUi::Backends::SolidQueue
show all
- Defined in:
- lib/roundhouse_ui/backends/solid_queue.rb
Overview
Solid Queue implementation of the backend port. Reads Solid Queue's
ActiveRecord tables and normalizes them to the same shape the Sidekiq
backend exposes, so controllers/views don't change.
Solid Queue has no "retry set" (retries are just re-scheduled executions),
no Redis, and no capsules — the UI hides those via #supports?. Queue pause
is native, so there's no fetcher to warn about.
Defined Under Namespace
Classes: Entry, JobSet, Stats
Constant Summary
collapse
- CAPABILITIES =
No retries/redis/capsules/workers (deferred); pause is native (no fetcher
warning). dead/scheduled/busy are supported.
%i[dead scheduled busy native_pause].freeze
Instance Method Summary
collapse
Instance Method Details
#busy ⇒ Object
Currently-executing jobs, normalized to the Busy view's shape.
47
48
49
50
51
52
|
# File 'lib/roundhouse_ui/backends/solid_queue.rb', line 47
def busy
sq(:ClaimedExecution).includes(:job, :process).map do |claim|
e = Entry.new(claim)
{ process: claim.process&.name, tid: claim.id, queue: e.queue, run_at: claim.created_at, job: e }
end
end
|
#dead_set ⇒ Object
43
|
# File 'lib/roundhouse_ui/backends/solid_queue.rb', line 43
def dead_set = JobSet.new(sq(:FailedExecution).includes(:job).order(created_at: :desc))
|
#name ⇒ Object
13
|
# File 'lib/roundhouse_ui/backends/solid_queue.rb', line 13
def name = "Solid Queue"
|
#pause(name) ⇒ Object
63
|
# File 'lib/roundhouse_ui/backends/solid_queue.rb', line 63
def pause(name) = ::SolidQueue::Queue.new(name).pause
|
#paused_queues ⇒ Object
62
|
# File 'lib/roundhouse_ui/backends/solid_queue.rb', line 62
def paused_queues = ::SolidQueue::Pause.pluck(:queue_name)
|
#process_set ⇒ Object
Workers view is deferred (supports?(:workers) == false), and Solid Queue
processes don't report thread concurrency the way Metrics expects, so the
utilization signal reads as "no workers reporting" rather than crashing.
41
|
# File 'lib/roundhouse_ui/backends/solid_queue.rb', line 41
def process_set = []
|
#push(_payload) ⇒ Object
ActiveJob enqueues via perform_later; a raw push has no direct analogue.
67
|
# File 'lib/roundhouse_ui/backends/solid_queue.rb', line 67
def push(_payload) = raise NotImplementedError, "enqueue is Sidekiq-only for now"
|
#queue(name) ⇒ Object
33
|
# File 'lib/roundhouse_ui/backends/solid_queue.rb', line 33
def queue(name) = ::SolidQueue::Queue.new(name)
|
#queues ⇒ Object
32
|
# File 'lib/roundhouse_ui/backends/solid_queue.rb', line 32
def queues = ::SolidQueue::Queue.all
|
#resume(name) ⇒ Object
64
|
# File 'lib/roundhouse_ui/backends/solid_queue.rb', line 64
def resume(name) = ::SolidQueue::Queue.new(name).resume
|
#retry_set ⇒ Object
No retry set in Solid Queue — surfaced via supports?(:retries) => false.
36
|
# File 'lib/roundhouse_ui/backends/solid_queue.rb', line 36
def retry_set = EMPTY_SET
|
#scheduled_set ⇒ Object
44
|
# File 'lib/roundhouse_ui/backends/solid_queue.rb', line 44
def scheduled_set = JobSet.new(sq(:ScheduledExecution).includes(:job).order(:scheduled_at))
|
#set(kind) ⇒ Object
54
55
56
57
58
59
|
# File 'lib/roundhouse_ui/backends/solid_queue.rb', line 54
def set(kind)
case kind.to_s
when "dead" then dead_set
when "scheduled" then scheduled_set
end
end
|
#stats ⇒ Object
20
21
22
23
24
25
26
27
28
29
30
|
# File 'lib/roundhouse_ui/backends/solid_queue.rb', line 20
def stats
Stats.new(
processed: sq(:Job).where.not(finished_at: nil).count,
failed: sq(:FailedExecution).count,
enqueued: sq(:ReadyExecution).count,
scheduled: sq(:ScheduledExecution).count,
busy: sq(:ClaimedExecution).count,
dead: sq(:FailedExecution).count,
retries: 0
)
end
|
#supports?(capability) ⇒ Boolean
18
|
# File 'lib/roundhouse_ui/backends/solid_queue.rb', line 18
def supports?(capability) = CAPABILITIES.include?(capability)
|