Commit 103fa967 authored by Rémy Coutable's avatar Rémy Coutable

Merge branch '271242_optimize_nokogiri_search' into 'master'

Optimize Nokogiri search for post-processing pipeline [RUN ALL RSPEC] [RUN AS-IF-FOSS]

See merge request gitlab-org/gitlab!61994
parents 0697e2e6 56768543
---
name: optimize_linkable_attributes
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/59983
rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/328696
milestone: '13.12'
type: development
group: group::source code
default_enabled: false
...@@ -10,18 +10,12 @@ module Banzai ...@@ -10,18 +10,12 @@ module Banzai
protected protected
def linkable_attributes def linkable_attributes
if Feature.enabled?(:optimize_linkable_attributes, project, default_enabled: :yaml)
# Nokorigi Nodeset#search performs badly for documents with many nodes # Nokorigi Nodeset#search performs badly for documents with many nodes
# #
# Here we store fetched attributes in the shared variable "result" # Here we store fetched attributes in the shared variable "result"
# This variable is passed through the chain of filters and can be # This variable is passed through the chain of filters and can be
# accessed by them # accessed by them
result[:linkable_attributes] ||= fetch_linkable_attributes result[:linkable_attributes] ||= fetch_linkable_attributes
else
strong_memoize(:linkable_attributes) do
fetch_linkable_attributes
end
end
end end
def relative_url_root def relative_url_root
......
...@@ -15,17 +15,11 @@ module Banzai ...@@ -15,17 +15,11 @@ module Banzai
def call def call
return doc if context[:system_note] return doc if context[:system_note]
if Feature.enabled?(:optimize_linkable_attributes, project, default_enabled: :yaml)
# We exclude processed upload links from the linkable attributes to # We exclude processed upload links from the linkable attributes to
# prevent further modifications by RepositoryLinkFilter # prevent further modifications by RepositoryLinkFilter
linkable_attributes.reject! do |attr| linkable_attributes.reject! do |attr|
process_link_to_upload_attr(attr) process_link_to_upload_attr(attr)
end end
else
linkable_attributes.each do |attr|
process_link_to_upload_attr(attr)
end
end
doc doc
end end
......
...@@ -42,17 +42,5 @@ RSpec.describe Banzai::Pipeline::PostProcessPipeline do ...@@ -42,17 +42,5 @@ RSpec.describe Banzai::Pipeline::PostProcessPipeline do
subject subject
end end
context 'when "optimize_linkable_attributes" is disabled' do
before do
stub_feature_flags(optimize_linkable_attributes: false)
end
it 'searches for attributes twice' do
expect(doc).to receive(:search).twice.and_call_original
subject
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