blob: 93b6b6bfabd5a53d27f86a05ee8a1e0eaf633984 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
# frozen_string_literal: true
module Projects
# This worker can be called multiple times at the same time but only one of them can
# process events at a time. This is ensured by `try_obtain_lease` in `Ci::ProcessSyncEventsService`.
# `until_executing` here is to reduce redundant worker enqueuing.
class ProcessSyncEventsWorker
include ApplicationWorker
data_consistency :always
feature_category :cell
urgency :high
idempotent!
deduplicate :until_executed, if_deduplicated: :reschedule_once, ttl: 1.minute
def perform
results = ::Ci::ProcessSyncEventsService.new(
::Projects::SyncEvent, ::Ci::ProjectMirror
).execute
results.each do |key, value|
log_extra_metadata_on_done(key, value)
end
end
end
end
|