Class: SolidQueue::Process
- Includes:
- Process::Executor, Process::Prunable
- Defined in:
- lib/solid_queue_mongoid/models/classes.rb,
lib/solid_queue_mongoid/models/process.rb,
lib/solid_queue_mongoid/models/process/executor.rb,
lib/solid_queue_mongoid/models/process/prunable.rb
Defined Under Namespace
Constant Summary
Constants inherited from Record
Class Method Summary collapse
-
.register(kind:, name:, pid:, hostname:, supervisor: nil, metadata: {}, **rest) ⇒ Object
Called by SolidQueue::Processes::Registrable#register.
Instance Method Summary collapse
Methods inherited from Record
create_or_find_by!, find_by!, index, index_specifications, index_specifications=, inherited, non_blocking_lock, supports_insert_conflict_target?, transaction, use_index
Class Method Details
.register(kind:, name:, pid:, hostname:, supervisor: nil, metadata: {}, **rest) ⇒ Object
Called by SolidQueue::Processes::Registrable#register. Must accept: kind:, name:, pid:, hostname:, and optional metadata:/supervisor:
31 32 33 34 35 36 37 38 39 40 41 42 43 |
# File 'lib/solid_queue_mongoid/models/process.rb', line 31 def register(kind:, name:, pid:, hostname:, supervisor: nil, metadata: {}, **rest) attrs = { kind: kind, name: name, pid: pid, hostname: hostname, supervisor: supervisor, metadata: ( || {}).merge(rest), last_heartbeat_at: Time.current } SolidQueue.instrument(:register_process, kind: kind, name: name, pid: pid, hostname: hostname) do |payload| create!(attrs).tap do |process| payload[:process_id] = process.id end rescue StandardError => e payload[:error] = e raise end end |
Instance Method Details
#deregister(pruned: false) ⇒ Object
56 57 58 59 60 61 62 63 64 65 |
# File 'lib/solid_queue_mongoid/models/process.rb', line 56 def deregister(pruned: false) SolidQueue.instrument(:deregister_process, process: self, pruned: pruned) do |payload| destroy! supervisees.each(&:deregister) unless supervised? || pruned rescue StandardError => e payload[:error] = e raise end end |
#heartbeat ⇒ Object
46 47 48 49 50 51 52 53 54 |
# File 'lib/solid_queue_mongoid/models/process.rb', line 46 def heartbeat # Reload to clear any stale state before updating heartbeat begin reload rescue StandardError nil end update!(last_heartbeat_at: Time.current) end |