summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDouwe Maan <douwe@gitlab.com>2018-06-26 13:57:17 +0000
committerMayra Cabrera <mcabrera@gitlab.com>2018-06-26 11:54:07 -0500
commit496f49b7c778721ff0e4be96d1365f12cffb2769 (patch)
treeca4c7f4d36190f2b1867542a192ef82e991b3a2e
parentd799814d9495c09d121b5e9f8018d064f564a52c (diff)
downloadgitlab-ce-496f49b7c778721ff0e4be96d1365f12cffb2769.tar.gz
Merge branch '48269-wiki-page-returns-error-code-502' into 'master'
Resolve "Wiki page returns error code 502" Closes #48269 See merge request gitlab-org/gitlab-ce!20174
-rw-r--r--changelogs/unreleased/48269-wiki-page-returns-error-code-502.yml5
-rw-r--r--lib/banzai/filter/gollum_tags_filter.rb6
2 files changed, 9 insertions, 2 deletions
diff --git a/changelogs/unreleased/48269-wiki-page-returns-error-code-502.yml b/changelogs/unreleased/48269-wiki-page-returns-error-code-502.yml
new file mode 100644
index 00000000000..d3830e5b8c6
--- /dev/null
+++ b/changelogs/unreleased/48269-wiki-page-returns-error-code-502.yml
@@ -0,0 +1,5 @@
+---
+title: Remove performance bottleneck preventing large wiki pages from displaying
+merge_request: 20174
+author:
+type: performance
diff --git a/lib/banzai/filter/gollum_tags_filter.rb b/lib/banzai/filter/gollum_tags_filter.rb
index 4bc82ecb4d6..bb9f488cd87 100644
--- a/lib/banzai/filter/gollum_tags_filter.rb
+++ b/lib/banzai/filter/gollum_tags_filter.rb
@@ -56,10 +56,12 @@ module Banzai
# Pattern to match allowed image extensions
ALLOWED_IMAGE_EXTENSIONS = /.+(jpg|png|gif|svg|bmp)\z/i.freeze
+ # Do not perform linking inside these tags.
+ IGNORED_ANCESTOR_TAGS = %w(pre code tt).to_set
+
def call
doc.search(".//text()").each do |node|
- # Do not perform linking inside <code> blocks
- next unless node.ancestors('code').empty?
+ next if has_ancestor?(node, IGNORED_ANCESTOR_TAGS)
# A Gollum ToC tag is `[[_TOC_]]`, but due to MarkdownFilter running
# before this one, it will be converted into `[[<em>TOC</em>]]`, so it