]> git.koha-community.org Git - koha.git/commit
Bug 28833: Speed up holds queue builder via parallel processing
authorKyle M Hall <kyle@bywatersolutions.com>
Mon, 9 Aug 2021 17:46:00 +0000 (13:46 -0400)
committerKatrin Fischer <katrin.fischer@bsz-bw.de>
Fri, 25 Oct 2024 09:09:53 +0000 (11:09 +0200)
commitd8fc079eee7e6226af7e76a2eadcc1e2e31ff7b5
treec0c8bd420d2289f4382a07d45a526ee163ded29c
parentd3a71a446ab6cbe3a08c84ae051e707918a05798
Bug 28833: Speed up holds queue builder via parallel processing

The holds queue builder can take a very long time to run on systems with many holds. For example, a partner with 124,784 unfilled ( not found ) holds, is taking about 64 minutes to run. If we run that same number of holds in 5 parallel chunks ( splitting the number of records as evenly as possible, but *not* taking into account the holds per bib ), it takes 21.5 minutes. If we use 10 loops, it takes less then 14 minutes.

Test Plan:
0) Install the Perl library Parallel::ForkManager
1) Generate a huge number of holds ( a few thousand at the minimum )
2) Run the holds queue builder, use the `time` utility to track how much
   time it took to run
3) Set HoldsQueueParallelLoopsCount to 10
4) Repeat step 2, note the improvement in speed
5) Experiment with other values for HoldsQueueParallelLoopsCount
6) prove t/db_dependent/HoldsQueue.t

Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
C4/HoldsQueue.pm
installer/data/mysql/atomicupdate/bug_28833.perl [new file with mode: 0644]
installer/data/mysql/mandatory/sysprefs.sql
koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/circulation.pref
misc/cronjobs/holds/build_holds_queue.pl