Commit 2065b14d authored by Bob Van Landuyt's avatar Bob Van Landuyt

Merge branch 'fix-flipper-memoization' into 'master'

Disable Flipper memoization without RequestStore

See merge request gitlab-org/gitlab!72784
parents fd0d60b8 5c464b3d
......@@ -155,13 +155,13 @@ class Feature
def flipper
if Gitlab::SafeRequestStore.active?
Gitlab::SafeRequestStore[:flipper] ||= build_flipper_instance
Gitlab::SafeRequestStore[:flipper] ||= build_flipper_instance(memoize: true)
else
@flipper ||= build_flipper_instance
end
end
def build_flipper_instance
def build_flipper_instance(memoize: false)
active_record_adapter = Flipper::Adapters::ActiveRecord.new(
feature_class: FlipperFeature,
gate_class: FlipperGate)
......@@ -182,7 +182,7 @@ class Feature
expires_in: 1.minute)
Flipper.new(flipper_adapter).tap do |flip|
flip.memoize = true
flip.memoize = memoize
end
end
......
......@@ -102,12 +102,14 @@ RSpec.describe Feature, stub_feature_flags: false do
describe '.flipper' do
context 'when request store is inactive' do
it 'memoizes the Flipper instance' do
it 'memoizes the Flipper instance but does not not enable Flipper memoization' do
expect(Flipper).to receive(:new).once.and_call_original
2.times do
described_class.send(:flipper)
described_class.flipper
end
expect(described_class.flipper.adapter.memoizing?).to eq(false)
end
end
......@@ -115,9 +117,11 @@ RSpec.describe Feature, stub_feature_flags: false do
it 'memoizes the Flipper instance' do
expect(Flipper).to receive(:new).once.and_call_original
described_class.send(:flipper)
described_class.flipper
described_class.instance_variable_set(:@flipper, nil)
described_class.send(:flipper)
described_class.flipper
expect(described_class.flipper.adapter.memoizing?).to eq(true)
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