diff --git a/app/helpers/page_layout_helper.rb b/app/helpers/page_layout_helper.rb index 5038dcf9746e62693785c02a25dced6006328179..ec1d8577f361bcd10e6eef2fefeaf6114723ca7d 100644 --- a/app/helpers/page_layout_helper.rb +++ b/app/helpers/page_layout_helper.rb @@ -1,3 +1,4 @@ +# coding: utf-8 # frozen_string_literal: true module PageLayoutHelper @@ -36,7 +37,7 @@ def page_description(description = nil) if description.present? @page_description = description.squish elsif @page_description.present? - sanitize(@page_description, tags: []).truncate_words(30) + sanitize(@page_description.truncate_words(30), tags: []) end end diff --git a/changelogs/unreleased/62116-performance-issue-502-errors-on-rendering-of-issues-with-heavy-markdown-contents.yml b/changelogs/unreleased/62116-performance-issue-502-errors-on-rendering-of-issues-with-heavy-markdown-contents.yml new file mode 100644 index 0000000000000000000000000000000000000000..9596f487116aeac0223e40a5ebb141cf14199957 --- /dev/null +++ b/changelogs/unreleased/62116-performance-issue-502-errors-on-rendering-of-issues-with-heavy-markdown-contents.yml @@ -0,0 +1,6 @@ +--- +title: Fix performance issue with large Markdown content in issue or merge request + description +merge_request: 28597 +author: +type: performance diff --git a/changelogs/unreleased/sh-project-import-visibility-error.yml b/changelogs/unreleased/sh-project-import-visibility-error.yml new file mode 100644 index 0000000000000000000000000000000000000000..eb7e001c6aa38cd69856ce63925b95654a4c8f6f --- /dev/null +++ b/changelogs/unreleased/sh-project-import-visibility-error.yml @@ -0,0 +1,5 @@ +--- +title: Fix invalid visibility string comparison in project import +merge_request: 28612 +author: +type: fixed diff --git a/lib/gitlab/import_export/project_tree_restorer.rb b/lib/gitlab/import_export/project_tree_restorer.rb index 51001750a6cfd3aa6272909175c0d55ca98b71e9..20caadb89c05cba46d5683b5111290b1518b6a9e 100644 --- a/lib/gitlab/import_export/project_tree_restorer.rb +++ b/lib/gitlab/import_export/project_tree_restorer.rb @@ -129,7 +129,7 @@ def json_params def visibility_level level = override_params['visibility_level'] || json_params['visibility_level'] || @project.visibility_level - level = @project.group.visibility_level if @project.group && level > @project.group.visibility_level + level = @project.group.visibility_level if @project.group && level.to_i > @project.group.visibility_level { 'visibility_level' => level } end diff --git a/spec/helpers/page_layout_helper_spec.rb b/spec/helpers/page_layout_helper_spec.rb index cf98eed27f1abefb0249bbd16f044c4922c7444c..bf50763d06f87a737a38e026abbdf8283e93d7c6 100644 --- a/spec/helpers/page_layout_helper_spec.rb +++ b/spec/helpers/page_layout_helper_spec.rb @@ -38,6 +38,14 @@ expect(helper.page_description).to eq 'Bold Header' end + + it 'truncates before sanitizing' do + helper.page_description('<b>Bold</b> <img> <img> <img> <h1>Header</h1> ' * 10) + + # 12 words because <img> was counted as a word + expect(helper.page_description) + .to eq('Bold Header Bold Header Bold Header Bold Header Bold Header Bold Header...') + end end describe 'page_image' do diff --git a/spec/lib/gitlab/import_export/project_tree_restorer_spec.rb b/spec/lib/gitlab/import_export/project_tree_restorer_spec.rb index 6084dc964101e85e1ddd70d4cc43fc936a5bc64d..651aa600fb20f37e522762e56c15fbe6e689ddec 100644 --- a/spec/lib/gitlab/import_export/project_tree_restorer_spec.rb +++ b/spec/lib/gitlab/import_export/project_tree_restorer_spec.rb @@ -328,6 +328,19 @@ end context 'when the project has overridden params in import data' do + it 'handles string versions of visibility_level' do + # Project needs to be in a group for visibility level comparison + # to happen + group = create(:group) + project.group = group + + project.create_import_data(data: { override_params: { visibility_level: Gitlab::VisibilityLevel::INTERNAL.to_s } }) + + restored_project_json + + expect(project.visibility_level).to eq(Gitlab::VisibilityLevel::INTERNAL) + end + it 'overwrites the params stored in the JSON' do project.create_import_data(data: { override_params: { description: "Overridden" } })