Commit 536ebecf authored by Douglas Barbosa Alexandre's avatar Douglas Barbosa Alexandre

Merge branch 'mc-reduce-namespaces-lease-time' into 'master'

Hardcodes namespaces lease timing value to 1.5h

See merge request gitlab-org/gitlab-ce!31341
parents c017dc57 52767ae1
...@@ -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