From b4187cf2abb7007d528585f59b723c10dc3b4480 Mon Sep 17 00:00:00 2001 From: Jonathan Druart Date: Thu, 11 May 2023 12:38:53 +0200 Subject: [PATCH] Bug 33406: Handle ES search errors for authorities We are dealing ok with ES exceptions for biblio records search, catching them and raising them to the end user. But we don't for authorities, where we explode with an ugly 500. Test plan: Search for "(term_1*) AND (-) AND (term_2*)" in the authority search and notice that you don't get a 500 but an error instead saying that you should try again Signed-off-by: Pedro Amorim Signed-off-by: Nick Clemens Signed-off-by: Tomas Cohen Arazi (cherry picked from commit 09b29d06da5fac2bd1315d849f1b9bf924576700) Signed-off-by: Fridolin Somers --- authorities/authorities-home.pl | 33 ++++++++++++------- .../modules/authorities/searchresultlist.tt | 4 +++ 2 files changed, 25 insertions(+), 12 deletions(-) diff --git a/authorities/authorities-home.pl b/authorities/authorities-home.pl index e4f9bc471d..84122ed0e8 100755 --- a/authorities/authorities-home.pl +++ b/authorities/authorities-home.pl @@ -88,18 +88,6 @@ if ( $op eq "do_search" ) { my $resultsperpage = $query->param('resultsperpage') || 20; my $offset = ( $startfrom - 1 ) * $resultsperpage + 1; - my $builder = Koha::SearchEngine::QueryBuilder->new( - { index => $Koha::SearchEngine::AUTHORITIES_INDEX } ); - my $searcher = Koha::SearchEngine::Search->new( - { index => $Koha::SearchEngine::AUTHORITIES_INDEX } ); - my $search_query = $builder->build_authorities_query_compat( - [$marclist], [$and_or], [$excluding], [$operator], - [$value], $authtypecode, $orderby - ); - my ( $results, $total ) = $searcher->search_auth_compat( - $search_query, $offset, $resultsperpage - ); - ( $template, $loggedinuser, $cookie ) = get_template_and_user( { template_name => "authorities/searchresultlist.tt", @@ -109,6 +97,27 @@ if ( $op eq "do_search" ) { } ); + my $builder = Koha::SearchEngine::QueryBuilder->new( + { index => $Koha::SearchEngine::AUTHORITIES_INDEX } ); + my $searcher = Koha::SearchEngine::Search->new( + { index => $Koha::SearchEngine::AUTHORITIES_INDEX } ); + + my $search_query = $builder->build_authorities_query_compat( + [$marclist], [$and_or], [$excluding], [$operator], + [$value], $authtypecode, $orderby + ); + my ( $results, $total ); + eval { + ( $results, $total ) = $searcher->search_auth_compat( + $search_query, $offset, $resultsperpage + ); + }; + if ($@) { + my $query_error = q{}; + $query_error .= $@ if $@; + $template->param(query_error => $query_error); + } + $template->param( search_query => $search_query ) if C4::Context->preference('DumpSearchQueryTemplate'); $template->param( csrf_token => Koha::Token->new->generate_csrf({ diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/authorities/searchresultlist.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/authorities/searchresultlist.tt index 42826d7928..3011dfb690 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/authorities/searchresultlist.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/authorities/searchresultlist.tt @@ -43,6 +43,10 @@
+ [% IF ( query_error ) %] +

Error: [% query_error | html %]

+ [% END %] + [% IF ( total ) %]
[% pagination_bar | $raw %]
-- 2.20.1