module Einhorn::WorkerPool
Public Class Methods
ack_count()
click to toggle source
# File lib/einhorn/worker_pool.rb, line 76 def self.ack_count acked_unsignaled_modern_workers.length end
ack_target()
click to toggle source
# File lib/einhorn/worker_pool.rb, line 80 def self.ack_target Einhorn::State.config[:number] end
acked_modern_workers()
click to toggle source
# File lib/einhorn/worker_pool.rb, line 33 def self.acked_modern_workers acked_modern_workers_with_state.map {|pid, _| pid} end
acked_modern_workers_with_state()
click to toggle source
# File lib/einhorn/worker_pool.rb, line 25 def self.acked_modern_workers_with_state modern_workers_with_state.select {|pid, spec| spec[:acked]} end
acked_unsignaled_modern_workers()
click to toggle source
# File lib/einhorn/worker_pool.rb, line 43 def self.acked_unsignaled_modern_workers acked_modern_workers_with_state.select do |_, spec| spec[:signaled].length == 0 end.map {|pid, _| pid} end
missing_worker_count()
click to toggle source
Use the number of modern workers, rather than unsignaled modern workers. This means if e.g. we do bunch of decs and then incs, any workers which haven't died yet will count towards our number of workers. Since workers really should be dying shortly after they are USR2'd, that indicates a bad state and we shouldn't make it worse by spinning up more processes. Once they die, order will be restored.
# File lib/einhorn/worker_pool.rb, line 72 def self.missing_worker_count ack_target - modern_workers.length end
modern_workers()
click to toggle source
# File lib/einhorn/worker_pool.rb, line 29 def self.modern_workers modern_workers_with_state.map {|pid, _| pid} end
modern_workers_with_state()
click to toggle source
# File lib/einhorn/worker_pool.rb, line 19 def self.modern_workers_with_state workers_with_state.select do |pid, spec| spec[:version] == Einhorn::State.version end end
old_workers()
click to toggle source
# File lib/einhorn/worker_pool.rb, line 88 def self.old_workers unsignaled_workers - modern_workers end
unacked_unsignaled_modern_workers()
click to toggle source
# File lib/einhorn/worker_pool.rb, line 61 def self.unacked_unsignaled_modern_workers unacked_unsignaled_modern_workers_with_state.map {|pid, _| pid} end
unacked_unsignaled_modern_workers_with_state()
click to toggle source
# File lib/einhorn/worker_pool.rb, line 55 def self.unacked_unsignaled_modern_workers_with_state modern_workers_with_state.select {|pid, spec| !spec[:acked] && spec[:signaled].length == 0 } end
unsignaled_count()
click to toggle source
# File lib/einhorn/worker_pool.rb, line 84 def self.unsignaled_count unsignaled_modern_workers_with_state.length end
unsignaled_modern_workers_with_priority()
click to toggle source
# File lib/einhorn/worker_pool.rb, line 49 def self.unsignaled_modern_workers_with_priority unsignaled_modern_workers_with_state.sort_by do |pid, spec| spec[:acked] ? 1 : 0 end.map {|pid, _| pid} end
unsignaled_modern_workers_with_state()
click to toggle source
# File lib/einhorn/worker_pool.rb, line 37 def self.unsignaled_modern_workers_with_state modern_workers_with_state.select do |_, spec| spec[:signaled].length == 0 end end
unsignaled_workers()
click to toggle source
# File lib/einhorn/worker_pool.rb, line 13 def self.unsignaled_workers workers_with_state.select do |pid, spec| spec[:signaled].length == 0 end.map {|pid, _| pid} end
workers()
click to toggle source
# File lib/einhorn/worker_pool.rb, line 9 def self.workers workers_with_state.map {|pid, _| pid} end
workers_with_state()
click to toggle source
# File lib/einhorn/worker_pool.rb, line 3 def self.workers_with_state Einhorn::State.children.select do |pid, spec| spec[:type] == :worker end end