From 8ab917eb2e141ab013b99f9142c29b4128b66ab9 Mon Sep 17 00:00:00 2001 From: Kyle M Hall Date: Wed, 11 Aug 2021 09:21:11 -0400 Subject: [PATCH] Revert "Bug 28833: Speed up holds queue builder via parallel processing" This reverts commit 08ad241ab510350d44673376c28d853a328a4ec5. --- C4/HoldsQueue.pm | 45 +++++-------------- .../data/mysql/atomicupdate/bug_28833.perl | 9 ---- installer/data/mysql/mandatory/sysprefs.sql | 1 - .../admin/preferences/circulation.pref | 5 --- 4 files changed, 12 insertions(+), 48 deletions(-) delete mode 100644 installer/data/mysql/atomicupdate/bug_28833.perl diff --git a/C4/HoldsQueue.pm b/C4/HoldsQueue.pm index f6bf2a731d..3774214527 100644 --- a/C4/HoldsQueue.pm +++ b/C4/HoldsQueue.pm @@ -33,11 +33,9 @@ use Koha::Items; use Koha::Patrons; use Koha::Libraries; -use Data::Dumper; -use List::MoreUtils qw(any); use List::Util qw(shuffle); -use POSIX qw(ceil); -use Parallel::Loops; +use List::MoreUtils qw(any); +use Data::Dumper; use vars qw(@ISA @EXPORT @EXPORT_OK %EXPORT_TAGS); BEGIN { @@ -178,13 +176,16 @@ Top level function that turns reserves into tmp_holdsqueue and hold_fill_targets =cut sub CreateQueue { - my $loops = shift || 1; - - my $dbh = C4::Context->dbh; + my $dbh = C4::Context->dbh; $dbh->do("DELETE FROM tmp_holdsqueue"); # clear the old table for new info $dbh->do("DELETE FROM hold_fill_targets"); + my $total_bibs = 0; + my $total_requests = 0; + my $total_available_items = 0; + my $num_items_mapped = 0; + my $branches_to_use; my $transport_cost_matrix; my $use_transport_cost_matrix = C4::Context->preference("UseTransportCostMatrix"); @@ -201,41 +202,19 @@ sub CreateQueue { my $bibs_with_pending_requests = GetBibsWithPendingHoldRequests(); - # Split the list of bibs into groups to run in parallel - if ( $loops > 1 ) { - my $bibs_per_chunk = ceil( scalar @$bibs_with_pending_requests / $loops ); - my @chunks; - - push( @chunks, [ splice @$bibs_with_pending_requests, 0, $bibs_per_chunk ] ) while @$bibs_with_pending_requests; - push( @{$chunks[0]}, @$bibs_with_pending_requests ); # Add any remainders to the first parallel process - - my $pl = Parallel::Loops->new($loops); - $pl->foreach( \@chunks, sub { - _ProcessBiblios($_); - }); - } else { - _ProcessBiblios($bibs_with_pending_requests, $branches_to_use, $transport_cost_matrix); - } -} - -=head2 _ProcessBiblios - -=cut - -sub _ProcessBiblios { - my $bibs_with_pending_requests = shift; - my $branches_to_use = shift; - my $transport_cost_matrix = shift; - foreach my $biblionumber (@$bibs_with_pending_requests) { + $total_bibs++; my $hold_requests = GetPendingHoldRequestsForBib($biblionumber); my $available_items = GetItemsAvailableToFillHoldRequestsForBib($biblionumber, $branches_to_use); + $total_requests += scalar(@$hold_requests); + $total_available_items += scalar(@$available_items); my $item_map = MapItemsToHoldRequests($hold_requests, $available_items, $branches_to_use, $transport_cost_matrix); $item_map or next; my $item_map_size = scalar(keys %$item_map) or next; + $num_items_mapped += $item_map_size; CreatePicklistFromItemMap($item_map); AddToHoldTargetMap($item_map); if (($item_map_size < scalar(@$hold_requests )) and diff --git a/installer/data/mysql/atomicupdate/bug_28833.perl b/installer/data/mysql/atomicupdate/bug_28833.perl deleted file mode 100644 index 1d0c1adcca..0000000000 --- a/installer/data/mysql/atomicupdate/bug_28833.perl +++ /dev/null @@ -1,9 +0,0 @@ -$DBversion = 'XXX'; # will be replaced by the RM -if( CheckVersion( $DBversion ) ) { - $dbh->do(q{ - INSERT IGNORE INTO systempreferences ( `variable`, `value`, `options`, `explanation`, `type` ) VALUES - ('HoldsQueueParallelLoopsCount', '1', NULL, 'Number of parallel loops to use when running the holds queue builder', 'Integer'); - }); - - NewVersion( $DBversion, 28833, "Speed up holds queue builder via parallel processing"); -} diff --git a/installer/data/mysql/mandatory/sysprefs.sql b/installer/data/mysql/mandatory/sysprefs.sql index 1355297c79..3430bc26e7 100644 --- a/installer/data/mysql/mandatory/sysprefs.sql +++ b/installer/data/mysql/mandatory/sysprefs.sql @@ -239,7 +239,6 @@ INSERT INTO systempreferences ( `variable`, `value`, `options`, `explanation`, ` ('HoldsAutoFillPrintSlip','0',NULL,'If on, hold slip print dialog will be displayed automatically','YesNo'), ('HoldsLog','0',NULL,'If ON, log create/cancel/suspend/resume actions on holds.','YesNo'), ('HoldsNeedProcessingSIP', '0', NULL, 'Require staff to check-in before hold is set to waiting state', 'YesNo' ), -('HoldsQueueParallelLoopsCount', '1', NULL, 'Number of parallel loops to use when running the holds queue builder', 'Integer'), ('HoldsQueueSkipClosed', '0', NULL, 'If enabled, any libraries that are closed when the holds queue is built will be ignored for the purpose of filling holds.', 'YesNo'), ('HoldsSplitQueue','nothing','nothing|branch|itemtype|branch_itemtype','In the staff interface, split the holds view by the given criteria','Choice'), ('HoldsToPullStartDate','2',NULL,'Set the default start date for the Holds to pull list to this many days ago','Integer'), diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/circulation.pref b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/circulation.pref index bd4bb9bff1..d7d36d1bc7 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/circulation.pref +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/circulation.pref @@ -74,11 +74,6 @@ Circulation: - pref: HoldsToPullStartDate class: integer - day(s) ago. Note that the default end date is controlled by the system preference ConfirmFutureHolds. - - - - When building the holds queue, calculate hold matches using - - pref: HoldsQueueParallelLoopsCount - class: integer - - parallel loop(s). The more loops used, the faster it will calculate and the more computing resources it will use. - - pref: AllowAllMessageDeletion choices: -- 2.39.5