Commit c6acb77d authored by Mayra Cabrera's avatar Mayra Cabrera

Removes update_statistics_namespace feature flag

After measuring the impact of the namespace storage on
https://gitlab.com/gitlab-org/gitlab-ce/issues/64092. It was decided
that it's performant enough. So we can freely remove the feature flag

Related to https://gitlab.com/gitlab-org/gitlab-ce/issues/64092
parent 0fec9a4f
...@@ -73,15 +73,10 @@ module UpdateProjectStatistics ...@@ -73,15 +73,10 @@ module UpdateProjectStatistics
def schedule_namespace_aggregation_worker def schedule_namespace_aggregation_worker
run_after_commit do run_after_commit do
next unless schedule_aggregation_worker? next if project.nil?
Namespaces::ScheduleAggregationWorker.perform_async(project.namespace_id) Namespaces::ScheduleAggregationWorker.perform_async(project.namespace_id)
end end
end end
def schedule_aggregation_worker?
!project.nil? &&
Feature.enabled?(:update_statistics_namespace, project.root_ancestor)
end
end end
end end
...@@ -93,13 +93,7 @@ class ProjectStatistics < ApplicationRecord ...@@ -93,13 +93,7 @@ class ProjectStatistics < ApplicationRecord
def schedule_namespace_aggregation_worker def schedule_namespace_aggregation_worker
run_after_commit do run_after_commit do
next unless schedule_aggregation_worker?
Namespaces::ScheduleAggregationWorker.perform_async(project.namespace_id) Namespaces::ScheduleAggregationWorker.perform_async(project.namespace_id)
end end
end end
def schedule_aggregation_worker?
Feature.enabled?(:update_statistics_namespace, project&.root_ancestor)
end
end end
...@@ -9,7 +9,7 @@ module Namespaces ...@@ -9,7 +9,7 @@ module Namespaces
def perform(namespace_id) def perform(namespace_id)
namespace = Namespace.find(namespace_id) namespace = Namespace.find(namespace_id)
return unless update_statistics_enabled_for?(namespace) && namespace.aggregation_scheduled? return unless namespace.aggregation_scheduled?
Namespaces::StatisticsRefresherService.new.execute(namespace) Namespaces::StatisticsRefresherService.new.execute(namespace)
...@@ -23,9 +23,5 @@ module Namespaces ...@@ -23,9 +23,5 @@ module Namespaces
def log_error(namespace_path, error_message) def log_error(namespace_path, error_message)
Gitlab::SidekiqLogger.error("Namespace statistics can't be updated for #{namespace_path}: #{error_message}") Gitlab::SidekiqLogger.error("Namespace statistics can't be updated for #{namespace_path}: #{error_message}")
end end
def update_statistics_enabled_for?(namespace)
Feature.enabled?(:update_statistics_namespace, namespace)
end
end end
end end
...@@ -12,7 +12,7 @@ module Namespaces ...@@ -12,7 +12,7 @@ module Namespaces
namespace = Namespace.find(namespace_id) namespace = Namespace.find(namespace_id)
root_ancestor = namespace.root_ancestor root_ancestor = namespace.root_ancestor
return unless update_statistics_enabled_for?(root_ancestor) && !root_ancestor.aggregation_scheduled? return if root_ancestor.aggregation_scheduled?
Namespace::AggregationSchedule.safe_find_or_create_by!(namespace_id: root_ancestor.id) Namespace::AggregationSchedule.safe_find_or_create_by!(namespace_id: root_ancestor.id)
rescue ActiveRecord::RecordNotFound rescue ActiveRecord::RecordNotFound
...@@ -37,9 +37,5 @@ module Namespaces ...@@ -37,9 +37,5 @@ module Namespaces
def log_error(root_ancestor_id) def log_error(root_ancestor_id)
Gitlab::SidekiqLogger.error("Namespace can't be scheduled for aggregation: #{root_ancestor_id} does not exist") Gitlab::SidekiqLogger.error("Namespace can't be scheduled for aggregation: #{root_ancestor_id} does not exist")
end end
def update_statistics_enabled_for?(root_ancestor)
Feature.enabled?(:update_statistics_namespace, root_ancestor)
end
end end
end end
---
title: Enables storage statistics for root namespaces on database
merge_request: 31392
author:
type: other
...@@ -140,18 +140,7 @@ describe ProjectStatistics do ...@@ -140,18 +140,7 @@ describe ProjectStatistics do
let(:namespace) { create(:group) } let(:namespace) { create(:group) }
let(:project) { create(:project, namespace: namespace) } let(:project) { create(:project, namespace: namespace) }
context 'when the feature flag is off' do context 'when arguments are passed' do
it 'does not schedule the aggregation worker' do
stub_feature_flags(update_statistics_namespace: false, namespace: namespace)
expect(Namespaces::ScheduleAggregationWorker)
.not_to receive(:perform_async)
statistics.refresh!(only: [:lfs_objects_size])
end
end
context 'when the feature flag is on' do
it 'schedules the aggregation worker' do it 'schedules the aggregation worker' do
expect(Namespaces::ScheduleAggregationWorker) expect(Namespaces::ScheduleAggregationWorker)
.to receive(:perform_async) .to receive(:perform_async)
......
...@@ -32,19 +32,6 @@ shared_examples_for 'UpdateProjectStatistics' do ...@@ -32,19 +32,6 @@ shared_examples_for 'UpdateProjectStatistics' do
subject.save! subject.save!
end end
context 'when feature flag is disabled for the namespace' do
it 'does not schedules a namespace statistics worker' do
namespace = subject.project.root_ancestor
stub_feature_flags(update_statistics_namespace: false, namespace: namespace)
expect(Namespaces::ScheduleAggregationWorker)
.not_to receive(:perform_async)
subject.save!
end
end
end end
context 'when updating' do context 'when updating' do
...@@ -87,20 +74,6 @@ shared_examples_for 'UpdateProjectStatistics' do ...@@ -87,20 +74,6 @@ shared_examples_for 'UpdateProjectStatistics' do
subject.save! subject.save!
end.not_to exceed_query_limit(control_count) end.not_to exceed_query_limit(control_count)
end end
context 'when the feature flag is disabled for the namespace' do
it 'does not schedule a namespace statistics worker' do
namespace = subject.project.root_ancestor
stub_feature_flags(update_statistics_namespace: false, namespace: namespace)
expect(Namespaces::ScheduleAggregationWorker)
.not_to receive(:perform_async)
subject.write_attribute(statistic_attribute, read_attribute + delta)
subject.save!
end
end
end end
context 'when destroying' do context 'when destroying' do
...@@ -144,18 +117,5 @@ shared_examples_for 'UpdateProjectStatistics' do ...@@ -144,18 +117,5 @@ shared_examples_for 'UpdateProjectStatistics' do
project.destroy! project.destroy!
end end
end end
context 'when feature flag is disabled for the namespace' do
it 'does not schedule a namespace statistics worker' do
namespace = subject.project.root_ancestor
stub_feature_flags(update_statistics_namespace: false, namespace: namespace)
expect(Namespaces::ScheduleAggregationWorker)
.not_to receive(:perform_async)
subject.destroy!
end
end
end end
end end
...@@ -74,15 +74,4 @@ describe Namespaces::RootStatisticsWorker, '#perform' do ...@@ -74,15 +74,4 @@ describe Namespaces::RootStatisticsWorker, '#perform' do
worker.perform(group.id) worker.perform(group.id)
end end
end end
context 'when update_statistics_namespace is off' do
it 'does not create a new one' do
stub_feature_flags(update_statistics_namespace: false, namespace: group)
expect_any_instance_of(Namespaces::StatisticsRefresherService)
.not_to receive(:execute)
worker.perform(group.id)
end
end
end end
...@@ -31,16 +31,6 @@ describe Namespaces::ScheduleAggregationWorker, '#perform', :clean_gitlab_redis_ ...@@ -31,16 +31,6 @@ describe Namespaces::ScheduleAggregationWorker, '#perform', :clean_gitlab_redis_
expect(group.aggregation_schedule).to be_present expect(group.aggregation_schedule).to be_present
end end
end end
context 'when update_statistics_namespace is off' do
it 'does not create a new one' do
stub_feature_flags(update_statistics_namespace: false, namespace: group)
expect do
worker.perform(group.id)
end.not_to change(Namespace::AggregationSchedule, :count)
end
end
end end
context 'when group is not the root ancestor' do context 'when group is not the root ancestor' do
......
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