app/lib/actions/katello/event_queue/poller_thread.rb in katello-3.8.1 vs app/lib/actions/katello/event_queue/poller_thread.rb in katello-3.9.0.rc1

- old
+ new

@@ -1,10 +1,11 @@ module Actions module Katello module EventQueue class PollerThread SLEEP_INTERVAL = 2 + COUNT_UPDATE_INTERVAL = 250 cattr_accessor :instance def self.initialize(logger) self.instance ||= self.new(logger) end @@ -20,19 +21,41 @@ def close @thread.kill if @thread end + def run_event(event) + @logger.debug("event_queue_event: #{event.event_type}, #{event.object_id}") + ::User.as_anonymous_admin do + ::Katello::EventQueue.event_class(event.event_type).new(event.object_id).run + end + rescue => e + @logger.error("event_queue_error: #{event.event_type}, #{event.object_id}") + @logger.error(e.message) + @logger.error(e.backtrace.join("\n")) + ensure + ::Katello::EventQueue.clear_events(event.event_type, event.object_id, event.created_at) + end + def poll_for_events(suspended_action) @thread.kill if @thread @thread = Thread.new do loop do Rails.application.executor.wrap do begin + count = 0 + until (event = ::Katello::EventQueue.next_event).nil? - suspended_action.notify_queue_item(event.event_type, event.object_id, event.created_at) if event + run_event(event) + count += 1 + + if count > COUNT_UPDATE_INTERVAL + suspended_action.notify_count(count) + count = 0 + end end + suspended_action.notify_count(count) if count > 0 sleep SLEEP_INTERVAL rescue => e suspended_action.notify_fatal(e) raise e end