From 2b51fae56c2a91b753e3e26f79c094243dd8abee 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 --- 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 33a3479c72..686c80d57b 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.30.2