From ecd042812d3ded6c1e05cc27538da99336d42afc Mon Sep 17 00:00:00 2001 From: Laurent Laffont <llaffont@afi-sa.fr> Date: Fri, 10 Dec 2021 15:40:28 +0100 Subject: [PATCH] hotline #146510 Limit execution time of grep/sort to 1s in order to prevent server load when lot of autocompletion requests are sent --- VERSIONS_HOTLINE/146510 | 1 + library/Class/Autocomplete/IndexSearcher.php | 2 +- tests/eco/BokehEngineEcoTest.php | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) create mode 100644 VERSIONS_HOTLINE/146510 diff --git a/VERSIONS_HOTLINE/146510 b/VERSIONS_HOTLINE/146510 new file mode 100644 index 00000000000..1aa3cb4a19c --- /dev/null +++ b/VERSIONS_HOTLINE/146510 @@ -0,0 +1 @@ + - ticket #146510 : Autocompletion : limitation du temps maximum de réponse à 1s \ No newline at end of file diff --git a/library/Class/Autocomplete/IndexSearcher.php b/library/Class/Autocomplete/IndexSearcher.php index 4bdb0e1ea7c..69644a23870 100644 --- a/library/Class/Autocomplete/IndexSearcher.php +++ b/library/Class/Autocomplete/IndexSearcher.php @@ -68,7 +68,7 @@ class Class_Autocomplete_IndexSearcher { $grep_args []= "-i -E '(\b|'\'')" . $term . "'"; $grep_args[] = "-m 10 ".array_pop($grep_args); - return 'grep '.implode(' | grep ', $grep_args); + return 'timeout 1s grep '.implode(' | grep ', $grep_args); } diff --git a/tests/eco/BokehEngineEcoTest.php b/tests/eco/BokehEngineEcoTest.php index 35c8c847127..5be8e01fdf2 100644 --- a/tests/eco/BokehEngineEcoTest.php +++ b/tests/eco/BokehEngineEcoTest.php @@ -138,7 +138,7 @@ class BokehEcoSuggestAjaxActionTest extends BokehEngineEcoTestCase { /** @test */ public function grepCommandForIleMaiteShouldRestrictLastResultToTen() { $this->assertEquals( - "grep -riI -E --no-filename '(\b|'\'')M[aà áâãäå][iìÃîï]t[eèéêë][eèéêë]' | sort -Vuf | grep -i -E '(\b|'\'')l'\''[iìÃîï]l[eèéêë]' | grep -i -E '(\b|'\'')[iìÃîï]l[eèéêë]' | grep -m 10 -i -E '(\b|'\'')d[eèéêë]'", + "timeout 1s grep -riI -E --no-filename '(\b|'\'')M[aà áâãäå][iìÃîï]t[eèéêë][eèéêë]' | sort -Vuf | grep -i -E '(\b|'\'')l'\''[iìÃîï]l[eèéêë]' | grep -i -E '(\b|'\'')[iìÃîï]l[eèéêë]' | grep -m 10 -i -E '(\b|'\'')d[eèéêë]'", (new Class_Autocomplete_IndexSearcher)->buildGrepCommand("l'ile dE Maitee")); } -- GitLab