diff --git a/app/models/miq_queue.rb b/app/models/miq_queue.rb index 0350b29f032..dec96e1ed12 100644 --- a/app/models/miq_queue.rb +++ b/app/models/miq_queue.rb @@ -163,12 +163,8 @@ def self.get(options = {}) msgs.each do |msg| begin _log.info("#{MiqQueue.format_short_log_msg(msg)} previously timed out, retrying...") if msg.state == STATE_TIMEOUT - w = MiqWorker.server_scope.find_by(:pid => Process.pid) - if w.nil? - msg.update_attributes!(:state => STATE_DEQUEUE, :handler => MiqServer.my_server) - else - msg.update_attributes!(:state => STATE_DEQUEUE, :handler => w) - end + handler = MiqWorker.my_worker || MiqServer.my_server + msg.update_attributes!(:state => STATE_DEQUEUE, :handler => handler) result = msg break rescue ActiveRecord::StaleObjectError diff --git a/app/models/miq_worker.rb b/app/models/miq_worker.rb index 192a182647e..a09837359cb 100644 --- a/app/models/miq_worker.rb +++ b/app/models/miq_worker.rb @@ -267,6 +267,8 @@ def self.start_worker(*params) w end + cache_with_timeout(:my_worker) { server_scope.find_by(:pid => Process.pid) } + def self.find_all_current(server_id = nil) MiqWorker.find_current(server_id) end