From 3b31a20330b9f9158e41cadd029a6ada323ee0df Mon Sep 17 00:00:00 2001 From: Nick Clemens Date: Mon, 18 Sep 2023 17:25:15 +0000 Subject: [PATCH] Bug 34822: Process real time holds along with indexing Current code already skips indexing when adding record to instead index in a single call. This patch pdates the code to do the same thing for real time holds queue updates. To test: 1 - Have a marc file with several records that match records in your catalog You can export part of your catalog to generate one 2 - Set system preference: RealTimeHoldsQueue to 'enable' 3 - Stage and import file, make sure you are matching and overlaying 4 - Go to Administration->Manage jobs 5 - Note a batch update for each updated record 6 - Apply patch 7 - Repeat 8 - Note a single job added for the entire batch --- C4/ImportBatch.pm | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/C4/ImportBatch.pm b/C4/ImportBatch.pm index b950d193bd..14e4dcebd9 100644 --- a/C4/ImportBatch.pm +++ b/C4/ImportBatch.pm @@ -34,6 +34,7 @@ use C4::Items qw( AddItemFromMarc ModItemFromMarc ); use C4::Charset qw( MarcToUTF8Record SetUTF8Flag StripNonXmlChars ); use C4::AuthoritiesMarc qw( AddAuthority GuessAuthTypeCode GetAuthorityXML ModAuthority DelAuthority GetAuthorizedHeading ); use C4::MarcModificationTemplates qw( ModifyRecordWithTemplate ); +use Koha::BackgroundJob::BatchUpdateBiblioHoldsQueue; use Koha::Items; use Koha::SearchEngine; use Koha::SearchEngine::Indexer; @@ -662,7 +663,8 @@ sub BatchCommitRecords { $overlay_framework // $oldbiblio->frameworkcode, { overlay_context => $context, - skip_record_index => 1 + skip_record_index => 1, + skip_holds_queue => 1, } ); push @biblio_ids, $recordid; @@ -717,9 +719,12 @@ sub BatchCommitRecords { # final commit should be before Elastic background indexing in order to find job data $schema->txn_commit; - if ( @biblio_ids ) { - my $indexer = Koha::SearchEngine::Indexer->new({ index => $Koha::SearchEngine::BIBLIOS_INDEX }); + if (@biblio_ids) { + my $indexer = Koha::SearchEngine::Indexer->new( { index => $Koha::SearchEngine::BIBLIOS_INDEX } ); $indexer->index_records( \@biblio_ids, "specialUpdate", "biblioserver" ); + + Koha::BackgroundJob::BatchUpdateBiblioHoldsQueue->new->enqueue( { biblio_ids => [$biblionumber] } ) + if C4::Context->preference('RealTimeHoldsQueue'); } return ($num_added, $num_updated, $num_items_added, $num_items_replaced, $num_items_errored, $num_ignored); -- 2.30.2