Commit 52767ae1 authored by Mayra Cabrera's avatar Mayra Cabrera Committed by Douglas Barbosa Alexandre

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
parent c017dc57
...@@ -6,21 +6,13 @@ class Namespace::AggregationSchedule < ApplicationRecord ...@@ -6,21 +6,13 @@ class Namespace::AggregationSchedule < ApplicationRecord
self.primary_key = :namespace_id 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 REDIS_SHARED_KEY = 'gitlab:update_namespace_statistics_delay'.freeze
belongs_to :namespace belongs_to :namespace
after_create :schedule_root_storage_statistics 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 def schedule_root_storage_statistics
run_after_commit_or_now do run_after_commit_or_now do
try_obtain_lease do try_obtain_lease do
...@@ -28,7 +20,7 @@ class Namespace::AggregationSchedule < ApplicationRecord ...@@ -28,7 +20,7 @@ class Namespace::AggregationSchedule < ApplicationRecord
.perform_async(namespace_id) .perform_async(namespace_id)
Namespaces::RootStatisticsWorker Namespaces::RootStatisticsWorker
.perform_in(self.class.delay_timeout, namespace_id) .perform_in(DEFAULT_LEASE_TIMEOUT, namespace_id)
end end
end end
end end
...@@ -37,7 +29,7 @@ class Namespace::AggregationSchedule < ApplicationRecord ...@@ -37,7 +29,7 @@ class Namespace::AggregationSchedule < ApplicationRecord
# Used by ExclusiveLeaseGuard # Used by ExclusiveLeaseGuard
def lease_timeout def lease_timeout
self.class.delay_timeout DEFAULT_LEASE_TIMEOUT
end end
# Used by ExclusiveLeaseGuard # Used by ExclusiveLeaseGuard
......
...@@ -7,24 +7,6 @@ RSpec.describe Namespace::AggregationSchedule, :clean_gitlab_redis_shared_state, ...@@ -7,24 +7,6 @@ RSpec.describe Namespace::AggregationSchedule, :clean_gitlab_redis_shared_state,
it { is_expected.to belong_to :namespace } 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 describe '#schedule_root_storage_statistics' do
let(:namespace) { create(:namespace) } let(:namespace) { create(:namespace) }
let(:aggregation_schedule) { namespace.build_aggregation_schedule } let(:aggregation_schedule) { namespace.build_aggregation_schedule }
...@@ -87,21 +69,5 @@ RSpec.describe Namespace::AggregationSchedule, :clean_gitlab_redis_shared_state, ...@@ -87,21 +69,5 @@ RSpec.describe Namespace::AggregationSchedule, :clean_gitlab_redis_shared_state,
aggregation_schedule.schedule_root_storage_statistics aggregation_schedule.schedule_root_storage_statistics
end end
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
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