Skip to content
代码片段 群组 项目
提交 83584a23 编辑于 作者: Sylvester Chin's avatar Sylvester Chin
浏览文件

Use a separate Redis key for rescheduling jobs

上级 9436bd7d
No related branches found
No related tags found
无相关合并请求
---
name: use_sidekiq_dedup_signaling
feature_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/471239
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/159215
rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/472741
milestone: '17.3'
group: group::scalability
type: beta
default_enabled: false
......@@ -19,19 +19,9 @@ def perform(job)
# early return since not reschedulable. ensure block to handle cleanup.
return unless duplicate_job.reschedulable?
should_reschedule = if Feature.enabled?(:use_sidekiq_dedup_signaling, :request)
# use the deduplicating-signalling key
duplicate_job.delete!
duplicate_job.check_and_del_reschedule_signal
else
# use the deduplicated flag in cookie
res = duplicate_job.should_reschedule?
duplicate_job.delete!
res
end
duplicate_job.delete!
job_deleted = true
duplicate_job.reschedule if should_reschedule
duplicate_job.reschedule if duplicate_job.check_and_del_reschedule_signal
ensure
duplicate_job.delete! unless job_deleted
end
......
......@@ -45,7 +45,12 @@
end
end
shared_examples 'rescheduling in until_executed' do
context 'when job is reschedulable' do
before do
allow(fake_duplicate_job).to receive(:reschedulable?).and_return(true)
allow(fake_duplicate_job).to receive(:check_and_del_reschedule_signal).and_return(true)
end
it 'reschedules the job if deduplication happened' do
expect(fake_duplicate_job).to receive(:delete!).once
expect(fake_duplicate_job).to receive(:reschedule).once
......@@ -63,29 +68,6 @@
end
end
context 'when job is reschedulable' do
before do
allow(fake_duplicate_job).to receive(:reschedulable?).and_return(true)
end
context 'when use_sidekiq_dedup_signaling is enabled' do
before do
allow(fake_duplicate_job).to receive(:check_and_del_reschedule_signal).and_return(true)
end
it_behaves_like 'rescheduling in until_executed'
end
context 'when use_sidekiq_dedup_signaling is disabled' do
before do
allow(fake_duplicate_job).to receive(:should_reschedule?).and_return(true)
stub_feature_flags(use_sidekiq_dedup_signaling: false)
end
it_behaves_like 'rescheduling in until_executed'
end
end
def perform_strategy_with_error
expect do
strategy.perform({}) do
......
0% 加载中 .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册