Bug 39870 added a new hook 'notices_content' When searching for plugins, however, this hook does not check whether the plugin is enabled or not Additionally, since not using Koha::Plugins->call or get_enabled_plugins, this is loading the plugin code again and breaking transactions as we have done in other places.
Created attachment 191885 [details] [review] Bug 41684: Make `notices_content` hook be used with `get_enabled_plugins()` This patch makes the plugin hook load plugins using `get_enabled_plugins()`. This has the immediate effect of using the already cached plugin objects without reinstantiating them. This way transactions don't get broken for schema reloads. Also, only enabled plugins are loaded/attempted to be loaded. To test: 1. Run: $ ktd --shell k$ prove t/db_dependent/Koha/Plugins/Notices_content_hook.t => SUCCESS: Tests pass 2. Apply this patch 3. Repeat 1 => SUCCESS: Tests still pass: fundamental behavior remains unchanged. 4. Sign off :-D Signed-off-by: Tomás Cohen Arazi <tomascohen@theke.io>
Created attachment 191892 [details] [review] Bug 41684: Make `notices_content` hook be used with `get_enabled_plugins()` This patch makes the plugin hook load plugins using `get_enabled_plugins()`. This has the immediate effect of using the already cached plugin objects without reinstantiating them. This way transactions don't get broken for schema reloads. Also, only enabled plugins are loaded/attempted to be loaded. To test: 1. Run: $ ktd --shell k$ prove t/db_dependent/Koha/Plugins/Notices_content_hook.t => SUCCESS: Tests pass 2. Apply this patch 3. Repeat 1 => SUCCESS: Tests still pass: fundamental behavior remains unchanged. 4. Sign off :-D Signed-off-by: Tomás Cohen Arazi <tomascohen@theke.io> Signed-off-by: David Nind <david@davidnind.com>
This only worked for me after apply bug 38384 Without that additional set, I still received db locks To test: 1 - Install Rapido plugin 2 - Disable Rapido plugin 3 - Add a notice with code HOLD_CANCELLATION - add title and content to email transport and save 4 - Place several holds for patrons with email addresses 5 - In the DB: UPDATE reserves SET reservedate='2025-01-01' 6 - On command line: perl misc/cronjobs/holds/cancel_unfilled_holds.pl -d 35 -v -c -r unfilled 7 - The first one often succeeed, but then second locks 8 - Apply patch 9 - Clean any partial cancelled holds: DELETE FROM old_reserves; 10 - Repeat 6 11 - Still freezes 12 - Repeat 9 13 - Apply 38384 14 - Repeat 6 15 - Success!
Created attachment 192338 [details] [review] Bug 41684: Make `notices_content` hook be used with `get_enabled_plugins()` This patch makes the plugin hook load plugins using `get_enabled_plugins()`. This has the immediate effect of using the already cached plugin objects without reinstantiating them. This way transactions don't get broken for schema reloads. Also, only enabled plugins are loaded/attempted to be loaded. To test: 1. Run: $ ktd --shell k$ prove t/db_dependent/Koha/Plugins/Notices_content_hook.t => SUCCESS: Tests pass 2. Apply this patch 3. Repeat 1 => SUCCESS: Tests still pass: fundamental behavior remains unchanged. 4. Sign off :-D Signed-off-by: Tomás Cohen Arazi <tomascohen@theke.io> Signed-off-by: David Nind <david@davidnind.com> Signed-off-by: Martin Renvoize <martin.renvoize@openfifth.co.uk>
Nice work everyone! Pushed to main for 26.05