Commit 75a8eeef authored by Sean McGivern's avatar Sean McGivern

Merge branch 'bvl-remove-sidekiq-deduplication-feature-flag' into 'master'

Remove feature flag for dropping duplicate jobs

See merge request gitlab-org/gitlab!29116
parents aa3b1bcf 237bc8e3
---
title: Avoid scheduling duplicate sidekiq jobs
merge_request: 29116
author:
type: performance
# frozen_string_literal: true
require 'digest'
module Gitlab
module SidekiqMiddleware
module DuplicateJobs
DROPPABLE_QUEUES = Set.new([
Namespaces::RootStatisticsWorker.queue,
Namespaces::ScheduleAggregationWorker.queue
]).freeze
def self.drop_duplicates?(queue_name)
Feature.enabled?(:drop_duplicate_sidekiq_jobs) ||
drop_duplicates_for_queue?(queue_name)
end
private_class_method def self.drop_duplicates_for_queue?(queue_name)
DROPPABLE_QUEUES.include?(queue_name) &&
Feature.enabled?(:drop_duplicate_sidekiq_jobs_for_queue)
end
end
end
end
...@@ -67,7 +67,7 @@ module Gitlab ...@@ -67,7 +67,7 @@ module Gitlab
end end
def droppable? def droppable?
idempotent? && duplicate? && DuplicateJobs.drop_duplicates?(queue_name) idempotent? && duplicate?
end end
private private
......
...@@ -113,28 +113,22 @@ describe Gitlab::SidekiqMiddleware::DuplicateJobs::DuplicateJob, :clean_gitlab_r ...@@ -113,28 +113,22 @@ describe Gitlab::SidekiqMiddleware::DuplicateJobs::DuplicateJob, :clean_gitlab_r
end end
describe 'droppable?' do describe 'droppable?' do
where(:idempotent, :duplicate, :feature_enabled) do where(:idempotent, :duplicate) do
# [true, false].repeated_permutation(3) # [true, false].repeated_permutation(2)
[[true, true, true], [[true, true],
[true, true, false], [true, false],
[true, false, true], [false, true],
[true, false, false], [false, false]]
[false, true, true],
[false, true, false],
[false, false, true],
[false, false, false]]
end end
with_them do with_them do
before do before do
allow(AuthorizedProjectsWorker).to receive(:idempotent?).and_return(idempotent) allow(AuthorizedProjectsWorker).to receive(:idempotent?).and_return(idempotent)
allow(duplicate_job).to receive(:duplicate?).and_return(duplicate) allow(duplicate_job).to receive(:duplicate?).and_return(duplicate)
allow(Gitlab::SidekiqMiddleware::DuplicateJobs)
.to receive(:drop_duplicates?).with(queue).and_return(feature_enabled)
end end
it 'is droppable when all conditions are met' do it 'is droppable when all conditions are met' do
if idempotent && duplicate && feature_enabled if idempotent && duplicate
expect(duplicate_job).to be_droppable expect(duplicate_job).to be_droppable
else else
expect(duplicate_job).not_to be_droppable expect(duplicate_job).not_to be_droppable
......
# frozen_string_literal: true
require 'spec_helper'
describe Gitlab::SidekiqMiddleware::DuplicateJobs do
using RSpec::Parameterized::TableSyntax
describe '.drop_duplicates?' do
where(:global_feature_enabled, :selected_queue_enabled, :queue, :expected) do
true | true | described_class::DROPPABLE_QUEUES.first | true
true | true | "other_queue" | true
true | false | described_class::DROPPABLE_QUEUES.first | true
true | false | "other_queue" | true
false | true | described_class::DROPPABLE_QUEUES.first | true
false | true | "other_queue" | false
false | false | described_class::DROPPABLE_QUEUES.first | false
false | false | "other_queue" | false
end
with_them do
before do
stub_feature_flags(drop_duplicate_sidekiq_jobs: global_feature_enabled,
drop_duplicate_sidekiq_jobs_for_queue: selected_queue_enabled)
end
it "allows dropping jobs when expected" do
expect(described_class.drop_duplicates?(queue)).to be(expected)
end
end
end
end
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment