From 49db39c060163c3d46de4eff283919cc9af30a97 Mon Sep 17 00:00:00 2001 From: Nick Clemens Date: Fri, 25 May 2018 09:32:58 +0000 Subject: [PATCH] Bug 18822: Check if we have MARC::Record and convert if not when using ES The new_record_from_zebra subroutine assumes that when using ES we always get MARC::Record objects when using ES, but sometimes we get them as xml via Z39 or internally. This adds a test to new_from_zebra to confirm we have a record object and to convert it if not To test: 1 - Perform an advanced search from the advanced editor, make sure to select 'Local catalog' and a remote source 2 - Error 'Internal search error [Object object]' 3 - Apply patch 4 - Repeat search, success! 5 - Select and deselect various servers, search should still work Signed-off-by: Katrin Fischer Signed-off-by: Marcel de Rooy Signed-off-by: Nick Clemens Signed-off-by: Martin Renvoize --- C4/Search.pm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/C4/Search.pm b/C4/Search.pm index 10973e3aba..77a178c60f 100644 --- a/C4/Search.pm +++ b/C4/Search.pm @@ -2506,7 +2506,7 @@ sub new_record_from_zebra { # Set the default indexing modes my $search_engine = C4::Context->preference("SearchEngine"); if ($search_engine eq 'Elasticsearch') { - return $raw_data; + return ref $raw_data eq 'MARC::Record' ? $raw_data : MARC::Record->new_from_xml( $raw_data, 'UTF-8' ); } my $index_mode = ( $server eq 'biblioserver' ) ? C4::Context->config('zebra_bib_index_mode') // 'dom' -- 2.39.5