From 82b545b6e1302c7ca740aa43e73c8a309ace63e8 Mon Sep 17 00:00:00 2001 From: David Gustafsson Date: Thu, 14 Feb 2019 15:06:35 +0100 Subject: [PATCH] Bug 21872: Simplify conditions and exit on invalid combination of arguments Change to zero based indexing for slice index to simplify some conditions. Exit with error message if trying to combine processes and biblio numbers arguments. Signed-off-by: Josef Moravec Signed-off-by: Martin Renvoize --- Koha/BiblioUtils.pm | 2 -- Koha/MetadataRecord/Authority.pm | 2 -- misc/search_tools/rebuild_elastic_search.pl | 23 +++++++++++---------- 3 files changed, 12 insertions(+), 15 deletions(-) diff --git a/Koha/BiblioUtils.pm b/Koha/BiblioUtils.pm index c83d94569d..88395a952f 100644 --- a/Koha/BiblioUtils.pm +++ b/Koha/BiblioUtils.pm @@ -131,8 +131,6 @@ sub get_all_biblios_iterator { if ($options{slice}) { $slice_count = $options{slice}->{count}; $slice_modulo = $options{slice}->{index}; - $slice_modulo = 0 if ($slice_modulo == $slice_count); - $search_terms = \[ ' mod(biblionumber, ?) = ?', $slice_count, $slice_modulo]; } diff --git a/Koha/MetadataRecord/Authority.pm b/Koha/MetadataRecord/Authority.pm index db14c5d634..3a188e7384 100644 --- a/Koha/MetadataRecord/Authority.pm +++ b/Koha/MetadataRecord/Authority.pm @@ -183,8 +183,6 @@ sub get_all_authorities_iterator { if ($options{slice}) { $slice_count = $options{slice}->{count}; $slice_modulo = $options{slice}->{index}; - $slice_modulo = 0 if ($slice_modulo == $slice_count); - $search_terms->{authid} = \[ ' mod ? = ?', $slice_count, $slice_modulo]; $search_terms = { '-and' => [ diff --git a/misc/search_tools/rebuild_elastic_search.pl b/misc/search_tools/rebuild_elastic_search.pl index 588a955b3f..696c0b1e7f 100755 --- a/misc/search_tools/rebuild_elastic_search.pl +++ b/misc/search_tools/rebuild_elastic_search.pl @@ -125,6 +125,10 @@ unless ($index_authorities || $index_biblios) { $index_authorities = $index_biblios = 1; } +if ($processes && @record_numbers) { + die "Argument p|processes cannot be combined with bn|bnumber"; +} + pod2usage(1) if $help; pod2usage( -exitstatus => 0, -verbose => 2 ) if $man; @@ -135,11 +139,12 @@ _verify_index_state($Koha::SearchEngine::Elasticsearch::AUTHORITIES_INDEX, $dele my $slice_index = 0; my $slice_count = $processes // 1; +my %iterator_options; if ($slice_count > 1) { # Fire up child processes for processing slices from 2 on. This main process will handle slice 1. - $slice_index = 1; - for (my $proc = 2; $proc <= $processes; $proc++) { + $slice_index = 0; + for (my $proc = 1; $proc < $slice_count; $proc++) { my $pid = fork(); die "Failed to fork a child process\n" unless defined $pid; if ($pid == 0) { @@ -149,12 +154,8 @@ if ($slice_count > 1) { } } # Fudge the commit count a bit to spread out the Elasticsearch commits - $commit *= 1 + 0.10 * ($slice_index - 1); -} - -my %iterator_options; -if ($slice_index) { - _log(1, "Processing slice $slice_index of $slice_count\n"); + $commit *= 1 + 0.10 * $slice_index; + _log(1, "Processing slice @{[$slice_index + 1]} of $slice_count\n"); $iterator_options{slice} = { index => $slice_index, count => $slice_count }; } @@ -193,16 +194,16 @@ if ($index_authorities) { _do_reindex($next, $Koha::SearchEngine::Elasticsearch::AUTHORITIES_INDEX); } -if ($slice_index == 1) { +if ($slice_index == 0) { # Main process, wait for children - for (my $proc = 2; $proc <= $processes; $proc++) { + for (my $proc = 1; $proc < $processes; $proc++) { wait(); } } =head2 _verify_index_state - _ verify_index_state($Koha::SearchEngine::Elasticsearch::BIBLIOS_INDEX, 1); + _verify_index_state($Koha::SearchEngine::Elasticsearch::BIBLIOS_INDEX, 1); Checks the index state and recreates it if requested. -- 2.20.1