View | Details | Raw Unified | Return to bug 26312
Collapse All | Expand All

(-)a/Koha/Exceptions/Elasticsearch.pm (-3 / +44 lines)
Lines 1-5 Link Here
1
package Koha::Exceptions::Elasticsearch;
1
package Koha::Exceptions::Elasticsearch;
2
2
3
# This file is part of Koha.
4
#
5
# Koha is free software; you can redistribute it and/or modify it
6
# under the terms of the GNU General Public License as published by
7
# the Free Software Foundation; either version 3 of the License, or
8
# (at your option) any later version.
9
#
10
# Koha is distributed in the hope that it will be useful, but
11
# WITHOUT ANY WARRANTY; without even the implied warranty of
12
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
# GNU General Public License for more details.
14
#
15
# You should have received a copy of the GNU General Public License
16
# along with Koha; if not, see <http://www.gnu.org/licenses>.
17
3
use Modern::Perl;
18
use Modern::Perl;
4
19
5
use Exception::Class (
20
use Exception::Class (
Lines 7-17 use Exception::Class ( Link Here
7
    'Koha::Exceptions::Elasticsearch' => {
22
    'Koha::Exceptions::Elasticsearch' => {
8
        description => 'Something went wrong!',
23
        description => 'Something went wrong!',
9
    },
24
    },
25
    'Koha::Exceptions::Elasticsearch::BadResponse' => {
26
        isa         => 'Koha::Exceptions::Elasticsearch',
27
        description => 'Bad response received when submitting request to Elasticsearch',
28
        fields      => [ 'error', 'details' ]
29
    },
10
    'Koha::Exceptions::Elasticsearch::MARCFieldExprParseError' => {
30
    'Koha::Exceptions::Elasticsearch::MARCFieldExprParseError' => {
11
        isa => 'Koha::Exceptions::Elasticsearch',
31
        isa         => 'Koha::Exceptions::Elasticsearch',
12
        description => 'Parse error while processing MARC field expression in mapping',
32
        description => 'Error parsing MARC Field Expression'
13
    }
33
    }
14
15
);
34
);
16
35
36
=head1 NAME
37
38
Koha::Exceptions::Elasticsearch - Base class for elasticsearch exceptions
39
40
=head1 Exceptions
41
42
=head2 Koha::Exceptions::Elasticsearch
43
44
Generic Elasticsearch exception
45
46
=head2 Koha::Exceptions::Elasticsearch::BadResponse
47
48
Exception to be used when more a request to ES fails
49
50
=head2 Koha::Exceptions::Elasticsearch::MARCFieldExprParseError
51
52
Exception to be used when encountering an error parsing MARC Field Expression
53
54
=head1 Class methods
55
56
=cut
57
17
1;
58
1;
(-)a/Koha/SearchEngine/Elasticsearch/Indexer.pm (+10 lines)
Lines 25-30 use base qw(Koha::SearchEngine::Elasticsearch); Link Here
25
use Data::Dumper;
25
use Data::Dumper;
26
26
27
use Koha::Exceptions;
27
use Koha::Exceptions;
28
use Koha::Exceptions::Elasticsearch;
28
use Koha::SearchEngine::Zebra::Indexer;
29
use Koha::SearchEngine::Zebra::Indexer;
29
use C4::AuthoritiesMarc qw//;
30
use C4::AuthoritiesMarc qw//;
30
use C4::Biblio;
31
use C4::Biblio;
Lines 114-119 sub update_index { Link Here
114
    }
115
    }
115
    my $response;
116
    my $response;
116
    if (@body) {
117
    if (@body) {
118
        try{
117
        my $elasticsearch = $self->get_elasticsearch();
119
        my $elasticsearch = $self->get_elasticsearch();
118
        $response = $elasticsearch->bulk(
120
        $response = $elasticsearch->bulk(
119
            index => $self->index_name,
121
            index => $self->index_name,
Lines 123-128 sub update_index { Link Here
123
        if ($response->{errors}) {
125
        if ($response->{errors}) {
124
            carp "One or more ElasticSearch errors occurred when indexing documents";
126
            carp "One or more ElasticSearch errors occurred when indexing documents";
125
        }
127
        }
128
        } catch {
129
            if( ref $_ eq 'Search::Elasticsearch::Error::Timeout' ){
130
            Koha::Exceptions::Elasticsearch::BadResponse->throw(
131
                error => "Record commit failed.",
132
                details => "Timeout",
133
            );
134
            }
135
        };
126
    }
136
    }
127
    return $response;
137
    return $response;
128
}
138
}
(-)a/misc/search_tools/rebuild_elasticsearch.pl (-7 / +15 lines)
Lines 123-128 use MARC::Field; Link Here
123
use MARC::Record;
123
use MARC::Record;
124
use Modern::Perl;
124
use Modern::Perl;
125
use Pod::Usage;
125
use Pod::Usage;
126
use Try::Tiny;
126
127
127
my $verbose = 0;
128
my $verbose = 0;
128
my $commit = 5000;
129
my $commit = 5000;
Lines 301-312 sub _do_reindex { Link Here
301
        push @commit_buffer, $record;
302
        push @commit_buffer, $record;
302
        if ( !( --$commit_count ) ) {
303
        if ( !( --$commit_count ) ) {
303
            _log( 1, "Committing $commit records...\n" );
304
            _log( 1, "Committing $commit records...\n" );
304
            my $response = $indexer->update_index( \@id_buffer, \@commit_buffer );
305
            my $response;
305
            _handle_response($response);
306
            try{
306
            $commit_count  = $commit;
307
                $response = $indexer->update_index( \@id_buffer, \@commit_buffer );
307
            @id_buffer     = ();
308
                _handle_response($response);
308
            @commit_buffer = ();
309
                $commit_count  = $commit;
309
            _log( 1, "Commit complete\n" );
310
                @id_buffer     = ();
311
                @commit_buffer = ();
312
                _log( 1, "Commit complete\n" );
313
            } catch {
314
                if( ref $_ eq 'Koha::Exceptions::Elasticsearch::BadResponse'){
315
                    _log(1,$_->{error});
316
                    _log(2,$_->{details});
317
                }
318
            }
310
        }
319
        }
311
    }
320
    }
312
321
313
- 

Return to bug 26312