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 C4::Context;
29
use C4::Context;
29
30
30
=head1 NAME
31
=head1 NAME
Lines 111-122 sub update_index { Link Here
111
    }
112
    }
112
    my $response;
113
    my $response;
113
    if (@body) {
114
    if (@body) {
115
        try{
114
        my $elasticsearch = $self->get_elasticsearch();
116
        my $elasticsearch = $self->get_elasticsearch();
115
        $response = $elasticsearch->bulk(
117
        $response = $elasticsearch->bulk(
116
            index => $self->index_name,
118
            index => $self->index_name,
117
            type => 'data', # is just hard coded in Indexer.pm?
119
            type => 'data', # is just hard coded in Indexer.pm?
118
            body => \@body
120
            body => \@body
119
        );
121
        );
122
        } catch {
123
            if( ref $_ eq 'Search::Elasticsearch::Error::Timeout' ){
124
            Koha::Exceptions::Elasticsearch::BadResponse->throw(
125
                error => "Record commit failed.",
126
                details => "Timeout",
127
            );
128
            }
129
        };
120
    }
130
    }
121
    return $response;
131
    return $response;
122
}
132
}
(-)a/misc/search_tools/rebuild_elasticsearch.pl (-7 / +16 lines)
Lines 116-121 use MARC::Field; Link Here
116
use MARC::Record;
116
use MARC::Record;
117
use Modern::Perl;
117
use Modern::Perl;
118
use Pod::Usage;
118
use Pod::Usage;
119
use Try::Tiny;
119
120
120
my $verbose = 0;
121
my $verbose = 0;
121
my $commit = 5000;
122
my $commit = 5000;
Lines 288-299 sub _do_reindex { Link Here
288
        push @commit_buffer, $record;
289
        push @commit_buffer, $record;
289
        if ( !( --$commit_count ) ) {
290
        if ( !( --$commit_count ) ) {
290
            _log( 1, "Committing $commit records...\n" );
291
            _log( 1, "Committing $commit records...\n" );
291
            my $response = $indexer->update_index( \@id_buffer, \@commit_buffer );
292
            my $response;
292
            _handle_response($response);
293
            try{
293
            $commit_count  = $commit;
294
                $response = $indexer->update_index( \@id_buffer, \@commit_buffer );
294
            @id_buffer     = ();
295
                _handle_response($response);
295
            @commit_buffer = ();
296
                $commit_count  = $commit;
296
            _log( 1, "Commit complete\n" );
297
                @id_buffer     = ();
298
                @commit_buffer = ();
299
                _log( 1, "Commit complete\n" );
300
            } catch {
301
                if( ref $_ eq 'Koha::Exceptions::Elasticsearch::BadResponse'){
302
                    _log(1,"Whoops");
303
                    _log(1,$_->{error});
304
                    _log(2,$_->{details});
305
                }
306
            }
297
        }
307
        }
298
    }
308
    }
299
309
300
- 

Return to bug 26312