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,17 +71,23 @@ module Namespaces ...@@ -71,17 +71,23 @@ module Namespaces
traversal_ids.present? traversal_ids.present?
end end
def root_ancestor def use_traversal_ids_for_root_ancestor?
return super if parent.nil? return false unless Feature.enabled?(:use_traversal_ids_for_root_ancestor, default_enabled: :yaml)
return super unless persisted?
traversal_ids.present?
end
return super if traversal_ids.blank? def root_ancestor
return super unless Feature.enabled?(:use_traversal_ids_for_root_ancestor, default_enabled: :yaml) return super unless use_traversal_ids_for_root_ancestor?
strong_memoize(:root_ancestor) do strong_memoize(:root_ancestor) do
if parent.nil?
self
else
Namespace.find_by(id: traversal_ids.first) Namespace.find_by(id: traversal_ids.first)
end end
end end
end
def self_and_descendants def self_and_descendants
return super unless use_traversal_ids? return super unless use_traversal_ids?
......
...@@ -974,6 +974,14 @@ RSpec.describe Namespace do ...@@ -974,6 +974,14 @@ RSpec.describe Namespace do
end end
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 describe '#use_traversal_ids?' do
let_it_be(:namespace, reload: true) { create(:namespace) } let_it_be(:namespace, reload: true) { create(:namespace) }
...@@ -985,6 +993,8 @@ RSpec.describe Namespace do ...@@ -985,6 +993,8 @@ RSpec.describe Namespace do
end end
it { is_expected.to eq true } it { is_expected.to eq true }
it_behaves_like 'disabled feature flag when traversal_ids is blank'
end end
context 'when use_traversal_ids feature flag is false' do context 'when use_traversal_ids feature flag is false' do
...@@ -996,6 +1006,30 @@ RSpec.describe Namespace do ...@@ -996,6 +1006,30 @@ RSpec.describe Namespace do
end end
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 describe '#use_traversal_ids_for_ancestors?' do
let_it_be(:namespace, reload: true) { create(:namespace) } let_it_be(:namespace, reload: true) { create(:namespace) }
...@@ -1007,6 +1041,8 @@ RSpec.describe Namespace do ...@@ -1007,6 +1041,8 @@ RSpec.describe Namespace do
end end
it { is_expected.to eq true } it { is_expected.to eq true }
it_behaves_like 'disabled feature flag when traversal_ids is blank'
end end
context 'when use_traversal_ids_for_ancestors? feature flag is false' do 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