https://bugs.koha-community.org/bugzilla3/show_bug.cgi?id=41919 --- Comment #7 from Martin Renvoize (ashimema) <martin.renvoize@openfifth.co.uk> --- Created attachment 198271 --> https://bugs.koha-community.org/bugzilla3/attachment.cgi?id=198271&action=edit Bug 41919: Limit number of current reports a single user can run simultaneously Building on bug 41918, it would be good to limit the number of reports a given user can run at a time. This control is config-file based as it is tied to the server resources provided by the administrator. Adds a new koha-conf.xml option total_running_reports_per_user_limit (0 = disabled). When the configured limit is reached, the user is told "You have too many reports running at the moment. Please wait for some of them to finish before running this report again." Note on implementation: the original patch on bz (attachment 198034) performed a second pre-flight Koha::Reports->running call in reports/guided_reports.pl. The bug 41918 QA follow-ups already pushed the duplicate-running guard into Koha::Report::prep_report so it would fire across the staff UI, svc/report and opac/svc/report. This patch extends that same model-layer architecture rather than reintroducing controller-layer enforcement: - New Koha::Exceptions::Report::TotalRunning subclass of Koha::Exceptions::Report. - prep_report now performs a second check after the duplicate one and throws TotalRunning when the user has total_running_reports_per_user_limit reports of any kind already in flight. - All three callers (guided_reports.pl, svc/report, opac/svc/report) catch the new exception alongside DuplicateRunning, mapping it to a new template error key total_running_reports_limit_exceeded for the staff UI and a JSON {error: total_running_reports_limit_exceeded} with HTTP 429 for the JSON endpoints. Test Plan: 1) Set total_running_reports_per_user_limit to 3 in your koha-conf.xml. 2) Create 3 long-running reports like: SELECT COUNT(*) FROM items i1 JOIN items i2 JOIN items i3 JOIN items i4 JOIN items i5 JOIN items i6 3) Run each report in turn by opening a new tab, browsing to the reports module, and choosing to run that report. 4) Note the first three continue to run, but a fourth attempt gives the new "too many reports running" alert in the staff UI. 5) Repeat against /cgi-bin/koha/svc/report?id=N and confirm an HTTP 429 response with JSON {error: total_running_reports_limit_exceeded}. 6) Set total_running_reports_per_user_limit back to 0 and confirm normal behaviour resumes. 7) prove t/db_dependent/Koha/Reports.t -> 13 tests pass, including a new subtest for TotalRunning. Signed-off-by: Alex Carver [Acerock7] <alex@rcls.org> Signed-off-by: Martin Renvoize <martin.renvoize@openfifth.co.uk> -- You are receiving this mail because: You are watching all bug changes.