Skip to content

Commit

Permalink
Move non-rails sync into a method
Browse files Browse the repository at this point in the history
  • Loading branch information
agrare committed Aug 16, 2024
1 parent 9a1a3c0 commit 217068b
Show file tree
Hide file tree
Showing 3 changed files with 57 additions and 27 deletions.
8 changes: 8 additions & 0 deletions app/models/miq_server/worker_management.rb
Original file line number Diff line number Diff line change
Expand Up @@ -90,4 +90,12 @@ def remove_workers(workers)
end
miq_workers.reload
end

private

def sync_starting_rails_workers
end

def sync_stopping_rails_workers
end
end
30 changes: 20 additions & 10 deletions app/models/miq_server/worker_management/process.rb
Original file line number Diff line number Diff line change
Expand Up @@ -7,22 +7,18 @@ def sync_from_system

def sync_starting_workers
sync_from_system
starting = MiqWorker.find_all_starting
starting.where(:pid => miq_processes_by_pid.keys)
.reject(&:rails_worker?)
.each { |w| w.update!(:status => MiqWorker::STATUS_STARTED) }
sync_starting_rails_workers
sync_starting_non_rails_workers

starting.reload
MiqWorker.find_all_starting.to_a
end

def sync_stopping_workers
sync_from_system
stopping = MiqWorker.find_all_stopping
stopping.where(:pid => miq_processes_by_pid.keys)
.reject(&:rails_worker?)
.each { |w| w.update!(:status => MiqWorker::STATUS_STOPPED) }
sync_stopping_rails_workers
sync_stopping_non_rails_workers

stopping.reload
MiqWorker.find_all_stopping.to_a
end

def monitor_workers
Expand Down Expand Up @@ -88,4 +84,18 @@ def validate_worker(worker)
private

attr_accessor :miq_processes, :miq_processes_by_pid

def sync_starting_non_rails_workers
starting = MiqWorker.find_all_starting
starting.where(:pid => miq_processes_by_pid.keys)
.reject(&:rails_worker?)
.each { |w| w.update!(:status => MiqWorker::STATUS_STARTED) }
end

def sync_stopping_non_rails_workers
stopping = MiqWorker.find_all_stopping
stopping.where(:pid => miq_processes_by_pid.keys)
.reject(&:rails_worker?)
.each { |w| w.update!(:status => MiqWorker::STATUS_STOPPED) }
end
end
46 changes: 29 additions & 17 deletions app/models/miq_server/worker_management/systemd.rb
Original file line number Diff line number Diff line change
Expand Up @@ -6,29 +6,18 @@ def sync_from_system

def sync_starting_workers
sync_from_system
starting = MiqWorker.find_all_starting
starting.reject(&:rails_worker?).each do |worker|
systemd_worker = miq_services_by_unit[worker[:system_uid]]
next if systemd_worker.nil?
sync_starting_rails_workers
sync_starting_non_rails_workers

if systemd_worker[:load_state] == "loaded" && systemd_worker[:active_state] == "active" && systemd_worker[:sub_state] == "running"
worker.update!(:status => MiqWorker::STATUS_STARTED)
end
end
starting.reload
MiqWorker.find_all_starting.to_a
end

def sync_stopping_workers
sync_from_system
stopping = MiqWorker.find_all_stopping
stopping.reject(&:rails_worker?).each do |worker|
# If the worker record is "stopping" and the systemd unit is gone then the
# worker has successfully exited.
next if miq_services_by_unit[worker[:system_uid]].present?
sync_stopping_rails_workers
sync_stopping_non_rails_workers

worker.update!(:status => MiqWorker::STATUS_STOPPED)
end
stopping.reload
MiqWorker.find_all_stopping.to_a
end

def cleanup_failed_workers
Expand All @@ -49,6 +38,29 @@ def cleanup_failed_systemd_services

attr_accessor :miq_services, :miq_services_by_unit

def sync_stopping_non_rails_workers
stopping = MiqWorker.find_all_stopping
stopping.reject(&:rails_worker?).each do |worker|
# If the worker record is "stopping" and the systemd unit is gone then the
# worker has successfully exited.
next if miq_services_by_unit[worker[:system_uid]].present?

worker.update!(:status => MiqWorker::STATUS_STOPPED)
end
end

def sync_starting_non_rails_workers
starting = MiqWorker.find_all_starting
starting.reject(&:rails_worker?).each do |worker|
systemd_worker = miq_services_by_unit[worker[:system_uid]]
next if systemd_worker.nil?

if systemd_worker[:load_state] == "loaded" && systemd_worker[:active_state] == "active" && systemd_worker[:sub_state] == "running"
worker.update!(:status => MiqWorker::STATUS_STARTED)
end
end
end

def systemd_manager
@systemd_manager ||= begin
require "dbus/systemd"
Expand Down

0 comments on commit 217068b

Please sign in to comment.