Bug 26312: (follow-up) Fix passing of exception messages
authorNick Clemens <nick@bywatersolutions.com>
Thu, 1 Apr 2021 13:49:19 +0000 (13:49 +0000)
committerJonathan Druart <jonathan.druart@bugs.koha-community.org>
Fri, 16 Apr 2021 09:48:31 +0000 (11:48 +0200)
'error' has special meaning in exceptions so naming the fields:
type, details

Rather than only dealing with a single exception type, we generically
get the ES exception info and pass it up.

I could not recreate timeout still, however, I simply restarted the
ES docker during commit stage to cause NoNodes exceptions

Signed-off-by: Joonas Kylmälä <joonas.kylmala@helsinki.fi>
Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
Koha/Exceptions/Elasticsearch.pm
Koha/SearchEngine/Elasticsearch/Indexer.pm
misc/search_tools/rebuild_elasticsearch.pl

index 7ad8538..2068db9 100644 (file)
@@ -25,7 +25,7 @@ use Exception::Class (
     'Koha::Exceptions::Elasticsearch::BadResponse' => {
         isa         => 'Koha::Exceptions::Elasticsearch',
         description => 'Bad response received when submitting request to Elasticsearch',
-        fields      => [ 'error', 'details' ]
+        fields      => [ 'type', 'details' ]
     },
     'Koha::Exceptions::Elasticsearch::MARCFieldExprParseError' => {
         isa         => 'Koha::Exceptions::Elasticsearch',
index 43c2c8d..0c9b3ff 100644 (file)
@@ -125,12 +125,10 @@ sub update_index {
                 carp "One or more ElasticSearch errors occurred when indexing documents";
             }
         } catch {
-            if( ref $_ eq 'Search::Elasticsearch::Error::Timeout' ){
             Koha::Exceptions::Elasticsearch::BadResponse->throw(
-                error => "Record commit failed.",
-                details => "Timeout",
+                type => $_->{type},
+                details => $_->{text},
             );
-            }
         };
     }
     return $response;
index 19839ff..3b25709 100755 (executable)
@@ -309,10 +309,8 @@ sub _do_reindex {
                 _handle_response($response);
                 _log( 1, "Commit complete\n" );
             } catch {
-                if( ref $_ eq 'Koha::Exceptions::Elasticsearch::BadResponse'){
-                    _log(1,$_->{error});
-                    _log(2,$_->{details});
-                }
+                _log(1,"Elasticsearch exception thrown: ".$_->type."\n");
+                _log(2,"Details: ".$_->details."\n");
             };
             $commit_count  = $commit;
             @id_buffer     = ();