From 202f0a9702c520fd0e10dec6909dd7c900c71056 Mon Sep 17 00:00:00 2001 From: Adam Grare Date: Tue, 30 Jul 2024 10:45:20 -0400 Subject: [PATCH] Update system sync_starting/stopping for consistency --- .../miq_server/worker_management/systemd.rb | 8 ++++++-- .../worker_management/systemd_spec.rb | 18 +++++++++--------- 2 files changed, 15 insertions(+), 11 deletions(-) diff --git a/app/models/miq_server/worker_management/systemd.rb b/app/models/miq_server/worker_management/systemd.rb index e392c57fa49..43063a06fcb 100644 --- a/app/models/miq_server/worker_management/systemd.rb +++ b/app/models/miq_server/worker_management/systemd.rb @@ -6,7 +6,8 @@ def sync_from_system def sync_starting_workers sync_from_system - MiqWorker.find_all_starting.reject(&:rails_worker?).each do |worker| + 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? @@ -14,17 +15,20 @@ def sync_starting_workers worker.update!(:status => MiqWorker::STATUS_STARTED) end end + starting.reload end def sync_stopping_workers sync_from_system - MiqWorker.find_all_stopping.reject(&:rails_worker?).each do |worker| + 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 + stopping.reload end def cleanup_failed_workers diff --git a/spec/models/miq_server/worker_management/systemd_spec.rb b/spec/models/miq_server/worker_management/systemd_spec.rb index 39acb6323a2..69e476ca743 100644 --- a/spec/models/miq_server/worker_management/systemd_spec.rb +++ b/spec/models/miq_server/worker_management/systemd_spec.rb @@ -62,7 +62,7 @@ it "doesn't update the worker record" do expect(worker).not_to receive(:update!) - server.worker_manager.sync_starting_workers + expect(server.worker_manager.sync_starting_workers).to be_empty end end @@ -77,7 +77,7 @@ it "doesn't update the worker record" do expect(worker).not_to receive(:update!) - server.worker_manager.sync_starting_workers + expect(server.worker_manager.sync_starting_workers).to include(worker) end end @@ -88,7 +88,7 @@ it "doesn't update the worker record" do expect(worker).not_to receive(:update!) - server.worker_manager.sync_starting_workers + expect(server.worker_manager.sync_starting_workers).to include(worker) end end @@ -106,7 +106,7 @@ end it "doesn't update the worker record" do - server.worker_manager.sync_starting_workers + expect(server.worker_manager.sync_starting_workers).to include(worker) expect(worker.reload.status).to eq(MiqWorker::STATUS_STARTING) end @@ -125,7 +125,7 @@ end it "sets the worker record to started" do - server.worker_manager.sync_starting_workers + expect(server.worker_manager.sync_starting_workers).to be_empty expect(worker.reload.status).to eq(MiqWorker::STATUS_STARTED) end @@ -144,7 +144,7 @@ it "doesn't update the worker record" do expect(worker).not_to receive(:update!) - server.worker_manager.sync_stopping_workers + expect(server.worker_manager.sync_stopping_workers).to be_empty end end @@ -159,7 +159,7 @@ it "doesn't update the worker record" do expect(worker).not_to receive(:update!) - server.worker_manager.sync_stopping_workers + expect(server.worker_manager.sync_stopping_workers).to include(worker) end end @@ -181,13 +181,13 @@ it "doesn't update the worker record" do expect(worker).not_to receive(:update!) - server.worker_manager.sync_stopping_workers + expect(server.worker_manager.sync_stopping_workers).to include(worker) end end context "with a systemd unit that has exited" do it "sets the worker record to stopped" do - server.worker_manager.sync_stopping_workers + expect(server.worker_manager.sync_stopping_workers).to be_empty expect(worker.reload.status).to eq(MiqWorker::STATUS_STOPPED) end