Bug 41684 - notices_content hook is not checking if individual plugins are enabled and is reloading plugins
Summary: notices_content hook is not checking if individual plugins are enabled and is...
Status: Pushed to main
Alias: None
Product: Koha
Classification: Unclassified
Component: Plugin architecture (show other bugs)
Version: Main
Hardware: All All
: P5 - low major
Assignee: Tomás Cohen Arazi (tcohen)
QA Contact: Martin Renvoize (ashimema)
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2026-01-22 12:43 UTC by Nick Clemens (kidclamp)
Modified: 2026-02-06 22:22 UTC (History)
4 users (show)

See Also:
GIT URL:
Initiative type: ---
Sponsorship status: ---
Comma delimited list of Sponsors:
Crowdfunding goal: 0
Crowdfunding committed: 0
Crowdfunding contact:
Patch complexity: Trivial patch
Documentation contact:
Documentation submission:
Text to go in the release notes:
Version(s) released in:
26.05.00
Circulation function:


Attachments
Bug 41684: Make `notices_content` hook be used with `get_enabled_plugins()` (2.39 KB, patch)
2026-01-22 19:24 UTC, Tomás Cohen Arazi (tcohen)
Details | Diff | Splinter Review
Bug 41684: Make `notices_content` hook be used with `get_enabled_plugins()` (2.42 KB, patch)
2026-01-23 04:38 UTC, David Nind
Details | Diff | Splinter Review
Bug 41684: Make `notices_content` hook be used with `get_enabled_plugins()` (3.16 KB, patch)
2026-02-02 18:03 UTC, Martin Renvoize (ashimema)
Details | Diff | Splinter Review

Note You need to log in before you can comment on or make changes to this bug.
Description Nick Clemens (kidclamp) 2026-01-22 12:43:26 UTC
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.
Comment 1 Tomás Cohen Arazi (tcohen) 2026-01-22 19:24:12 UTC
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>
Comment 2 David Nind 2026-01-23 04:38:44 UTC
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>
Comment 3 Nick Clemens (kidclamp) 2026-01-26 14:02:25 UTC
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!
Comment 4 Martin Renvoize (ashimema) 2026-02-02 18:03:47 UTC
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>
Comment 5 Lucas Gass (lukeg) 2026-02-06 22:22:02 UTC
Nice work everyone!

Pushed to main for 26.05