diff --git a/app/models/miq_server/worker_management/monitor.rb b/app/models/miq_server/worker_management/monitor.rb index 60047f0ed44..7cb48102330 100644 --- a/app/models/miq_server/worker_management/monitor.rb +++ b/app/models/miq_server/worker_management/monitor.rb @@ -75,7 +75,8 @@ def sync_from_system def cleanup_orphaned_worker_rows if podified? unless current_pods.empty? - orphaned_rows = miq_workers.where.not(:system_uid => current_pods.keys) + # Cockpit is a threaded worker in the orchestrator that spins off a process it monitors and isn't a pod worker. + orphaned_rows = miq_workers.where.not(:type => %w[MiqCockpitWsWorker]).where.not(:system_uid => current_pods.keys) unless orphaned_rows.empty? _log.warn("Removing orphaned worker rows without corresponding pods: #{orphaned_rows.collect(&:system_uid).inspect}") orphaned_rows.destroy_all diff --git a/spec/models/miq_server/worker_management/monitor_spec.rb b/spec/models/miq_server/worker_management/monitor_spec.rb index 00b13130b59..4e07ecc4d65 100644 --- a/spec/models/miq_server/worker_management/monitor_spec.rb +++ b/spec/models/miq_server/worker_management/monitor_spec.rb @@ -78,6 +78,12 @@ server.cleanup_orphaned_worker_rows expect(MiqWorker.count).to eq(2) end + + it "skips MiqCockpitWsWorker rows" do + worker.update(:system_uid => "an_actual_guid", :type => "MiqCockpitWsWorker") + server.cleanup_orphaned_worker_rows + expect(MiqCockpitWsWorker.count).to eq(1) + end end end