Class: SolidQueue::Process

Inherits:
Record
  • Object
show all
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

Modules: Executor, Prunable

Constant Summary

Constants inherited from Record

Record::INDEX_HINTS

Class Method Summary collapse

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