Commit 95fbdf4d authored by Imre Farkas's avatar Imre Farkas

Merge branch '335157-don-t-use-recursive-root_ancestor-in-linear-mode' into 'master'

Resolve "Don't use recursive root_ancestor in linear mode"

See merge request gitlab-org/gitlab!65401
parents f363da8a 0b1bd654
......@@ -71,15 +71,21 @@ module Namespaces
traversal_ids.present?
end
def root_ancestor
return super if parent.nil?
return super unless persisted?
def use_traversal_ids_for_root_ancestor?
return false unless Feature.enabled?(:use_traversal_ids_for_root_ancestor, default_enabled: :yaml)
return super if traversal_ids.blank?
return super unless Feature.enabled?(:use_traversal_ids_for_root_ancestor, default_enabled: :yaml)
traversal_ids.present?
end
def root_ancestor
return super unless use_traversal_ids_for_root_ancestor?
strong_memoize(:root_ancestor) do
Namespace.find_by(id: traversal_ids.first)
if parent.nil?
self
else
Namespace.find_by(id: traversal_ids.first)
end
end
end
......
......@@ -974,6 +974,14 @@ RSpec.describe Namespace do
end
end
shared_examples 'disabled feature flag when traversal_ids is blank' do
before do
namespace.traversal_ids = []
end
it { is_expected.to eq false }
end
describe '#use_traversal_ids?' do
let_it_be(:namespace, reload: true) { create(:namespace) }
......@@ -985,6 +993,8 @@ RSpec.describe Namespace do
end
it { is_expected.to eq true }
it_behaves_like 'disabled feature flag when traversal_ids is blank'
end
context 'when use_traversal_ids feature flag is false' do
......@@ -996,6 +1006,30 @@ RSpec.describe Namespace do
end
end
describe '#use_traversal_ids_for_root_ancestor?' do
let_it_be(:namespace, reload: true) { create(:namespace) }
subject { namespace.use_traversal_ids_for_root_ancestor? }
context 'when use_traversal_ids_for_root_ancestor feature flag is true' do
before do
stub_feature_flags(use_traversal_ids_for_root_ancestor: true)
end
it { is_expected.to eq true }
it_behaves_like 'disabled feature flag when traversal_ids is blank'
end
context 'when use_traversal_ids_for_root_ancestor feature flag is false' do
before do
stub_feature_flags(use_traversal_ids_for_root_ancestor: false)
end
it { is_expected.to eq false }
end
end
describe '#use_traversal_ids_for_ancestors?' do
let_it_be(:namespace, reload: true) { create(:namespace) }
......@@ -1007,6 +1041,8 @@ RSpec.describe Namespace do
end
it { is_expected.to eq true }
it_behaves_like 'disabled feature flag when traversal_ids is blank'
end
context 'when use_traversal_ids_for_ancestors? feature flag is false' 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