From 775166c8f9b174df54cfd62e4422494eff8eaf43 Mon Sep 17 00:00:00 2001 From: Adam Grare Date: Mon, 22 Jul 2024 09:32:47 -0400 Subject: [PATCH] Fix non-rails worker not started on Process --- .../miq_server/worker_management/process.rb | 21 +++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/app/models/miq_server/worker_management/process.rb b/app/models/miq_server/worker_management/process.rb index 6b6be61c493..6ff7daa7666 100644 --- a/app/models/miq_server/worker_management/process.rb +++ b/app/models/miq_server/worker_management/process.rb @@ -1,15 +1,28 @@ class MiqServer::WorkerManagement::Process < MiqServer::WorkerManagement def sync_from_system require "sys/proctable" - self.miq_processes = Sys::ProcTable.ps.select { |proc| proc.ppid == my_server.pid } + self.miq_processes = Sys::ProcTable.ps.select { |proc| proc.ppid == my_server.pid } + self.miq_processes_by_pid = miq_processes.index_by(&:pid) end def sync_starting_workers - MiqWorker.find_all_starting.to_a + 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) } + + starting.reload.to_a end def sync_stopping_workers - MiqWorker.find_all_stopping.to_a + 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) } + + stopping.reload.to_a end def monitor_workers @@ -74,5 +87,5 @@ def validate_worker(worker) private - attr_accessor :miq_processes + attr_accessor :miq_processes, :miq_processes_by_pid end