Hardcodes namespaces lease timing value to 1.5h
After measuring the response and performance of the workers on https://gitlab.com/gitlab-org/gitlab-ce/issues/64092, we've decided 1.5 is fine for now. The time can be decreased later in the future when enforcing the quota limits Related to https://gitlab.com/gitlab-org/gitlab-ce/issues/64092
This commit is contained in:
parent
c017dc578d
commit
52767ae18d
|
@ -6,21 +6,13 @@ class Namespace::AggregationSchedule < ApplicationRecord
|
|||
|
||||
self.primary_key = :namespace_id
|
||||
|
||||
DEFAULT_LEASE_TIMEOUT = 3.hours
|
||||
DEFAULT_LEASE_TIMEOUT = 1.5.hours.to_i
|
||||
REDIS_SHARED_KEY = 'gitlab:update_namespace_statistics_delay'.freeze
|
||||
|
||||
belongs_to :namespace
|
||||
|
||||
after_create :schedule_root_storage_statistics
|
||||
|
||||
def self.delay_timeout
|
||||
redis_timeout = Gitlab::Redis::SharedState.with do |redis|
|
||||
redis.get(REDIS_SHARED_KEY)
|
||||
end
|
||||
|
||||
redis_timeout.nil? ? DEFAULT_LEASE_TIMEOUT : redis_timeout.to_i
|
||||
end
|
||||
|
||||
def schedule_root_storage_statistics
|
||||
run_after_commit_or_now do
|
||||
try_obtain_lease do
|
||||
|
@ -28,7 +20,7 @@ class Namespace::AggregationSchedule < ApplicationRecord
|
|||
.perform_async(namespace_id)
|
||||
|
||||
Namespaces::RootStatisticsWorker
|
||||
.perform_in(self.class.delay_timeout, namespace_id)
|
||||
.perform_in(DEFAULT_LEASE_TIMEOUT, namespace_id)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
@ -37,7 +29,7 @@ class Namespace::AggregationSchedule < ApplicationRecord
|
|||
|
||||
# Used by ExclusiveLeaseGuard
|
||||
def lease_timeout
|
||||
self.class.delay_timeout
|
||||
DEFAULT_LEASE_TIMEOUT
|
||||
end
|
||||
|
||||
# Used by ExclusiveLeaseGuard
|
||||
|
|
|
@ -7,24 +7,6 @@ RSpec.describe Namespace::AggregationSchedule, :clean_gitlab_redis_shared_state,
|
|||
|
||||
it { is_expected.to belong_to :namespace }
|
||||
|
||||
describe '.delay_timeout' do
|
||||
context 'when timeout is set on redis' do
|
||||
it 'uses personalized timeout' do
|
||||
Gitlab::Redis::SharedState.with do |redis|
|
||||
redis.set(described_class::REDIS_SHARED_KEY, 1.hour)
|
||||
end
|
||||
|
||||
expect(described_class.delay_timeout).to eq(1.hour)
|
||||
end
|
||||
end
|
||||
|
||||
context 'when timeout is not set on redis' do
|
||||
it 'uses default timeout' do
|
||||
expect(described_class.delay_timeout).to eq(3.hours)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe '#schedule_root_storage_statistics' do
|
||||
let(:namespace) { create(:namespace) }
|
||||
let(:aggregation_schedule) { namespace.build_aggregation_schedule }
|
||||
|
@ -87,21 +69,5 @@ RSpec.describe Namespace::AggregationSchedule, :clean_gitlab_redis_shared_state,
|
|||
aggregation_schedule.schedule_root_storage_statistics
|
||||
end
|
||||
end
|
||||
|
||||
context 'with a personalized lease timeout' do
|
||||
before do
|
||||
Gitlab::Redis::SharedState.with do |redis|
|
||||
redis.set(described_class::REDIS_SHARED_KEY, 1.hour)
|
||||
end
|
||||
end
|
||||
|
||||
it 'uses a personalized time' do
|
||||
expect(Namespaces::RootStatisticsWorker)
|
||||
.to receive(:perform_in)
|
||||
.with(1.hour, aggregation_schedule.namespace_id)
|
||||
|
||||
aggregation_schedule.save!
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Reference in New Issue