diff options
Diffstat (limited to 'app/services/ci/process_sync_events_service.rb')
-rw-r--r-- | app/services/ci/process_sync_events_service.rb | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/app/services/ci/process_sync_events_service.rb b/app/services/ci/process_sync_events_service.rb index 11ce6e8eeaf..d90ee02b1c6 100644 --- a/app/services/ci/process_sync_events_service.rb +++ b/app/services/ci/process_sync_events_service.rb @@ -2,7 +2,6 @@ module Ci class ProcessSyncEventsService - include Gitlab::Utils::StrongMemoize include ExclusiveLeaseGuard BATCH_SIZE = 1000 @@ -10,22 +9,27 @@ module Ci def initialize(sync_event_class, sync_class) @sync_event_class = sync_event_class @sync_class = sync_class + @results = {} end def execute - return unless ::Feature.enabled?(:ci_namespace_project_mirrors, default_enabled: :yaml) - # preventing parallel processing over the same event table try_obtain_lease { process_events } enqueue_worker_if_there_still_event + + @results end private def process_events + add_result(estimated_total_events: @sync_event_class.upper_bound_count) + events = @sync_event_class.preload_synced_relation.first(BATCH_SIZE) + add_result(consumable_events: events.size) + return if events.empty? processed_events = [] @@ -37,6 +41,7 @@ module Ci processed_events << event end ensure + add_result(processed_events: processed_events.size) @sync_event_class.id_in(processed_events).delete_all end end @@ -52,5 +57,9 @@ module Ci def lease_timeout 1.minute end + + def add_result(result) + @results.merge!(result) + end end end |