Bug 36736: Load plugins at the start of background job processing

This patch adds a call to get_enabled_plugins before processing background jobs to ensure
that all plugin hooks are loaded and cached

To test:
1 - Install a plugin that adds new objects e.g. the Contracts plugin
    https://github.com/bywatersolutions/fs-koha-plugin-contracts
    or the Koha Advent plugin:
    https://gitlab.com/koha-community/koha-advent/koha-plugin-fancyplugin
2 - Restart all
3 - Tail all your logs
4 - Stage and import a file containing items
5 - Note in the logs
    DBI Exception: DBD::mysql::st execute failed: Lock wait timeout exceeded; try restarting transaction
6 - Apply this patch
7 - Restart all
8 - Stage and import again
9 - Success!

Signed-off-by: David Cook <dcook@prosentient.com.au>
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
This commit is contained in:
Nick Clemens 2024-07-11 18:08:08 +00:00 committed by Katrin Fischer
parent ed04035e9f
commit 44b2c48ace
Signed by: kfischer
GPG key ID: 0EF6E2C03357A834

View file

@ -26,6 +26,7 @@ use C4::Context;
use Koha::DateUtils qw( dt_from_string );
use Koha::Exceptions;
use Koha::Exceptions::BackgroundJob;
use Koha::Plugins;
use base qw( Koha::Object );
@ -164,6 +165,12 @@ sub process {
return {} if ref($self) ne 'Koha::BackgroundJob';
# Our background jobs are called in forked processes
# to ensure we have all plugin hooks and data we call
# get_enabled_plugins at the star of processing
# to populate the cache
Koha::Plugins->get_enabled_plugins();
my $derived_class = $self->_derived_class;
$args ||= {};