[Koha-bugs] [Bug 26963] Koha::Template::Plugin::Branches::pickup_locations is very inefficient, causing timeouts on records with large numbers of holds/items

bugzilla-daemon at bugs.koha-community.org bugzilla-daemon at bugs.koha-community.org
Wed Nov 11 03:32:36 CET 2020


https://bugs.koha-community.org/bugzilla3/show_bug.cgi?id=26963

--- Comment #17 from Nick Clemens <nick at bywatersolutions.com> ---
Created attachment 113452
  -->
https://bugs.koha-community.org/bugzilla3/attachment.cgi?id=113452&action=edit
Bug 26963: Don't call 'can_be_transferred' for each possible library for each
item

Currently When calling Koha::Template::Plugin::Branches::pickup_locations
we call pickup_location for each item of the bib, and for each item we get a
list of possible
branches, we then check those branches against the transfer limits, this is
inefficent

Given a system with 100 branches, and each branch having an item attached to
one bib (100 items)
we will call can_be_transferred ~10000 times - and that will happen for each
hold placed on the bib

For me this patch reduced load time from 77 seconds to 18 seconds

To test:
1 - Find a bib
2 - Place 4 title level holds
3 - Add some branches and items for this bib to your system:
  INSERT INTO branches (branchcode,branchname,pickup_location) SELECT
CONCAT(branchcode,"D"),CONCAT(branchname,"A"),pickup_location FROM branches;
  INSERT INTO branches (branchcode,branchname,pickup_location) SELECT
CONCAT(branchcode,"D"),CONCAT(branchname,"B"),pickup_location FROM branches;
  INSERT INTO branches (branchcode,branchname,pickup_location) SELECT
CONCAT(branchcode,"D"),CONCAT(branchname,"C"),pickup_location FROM branches;
  INSERT INTO branches (branchcode,branchname,pickup_location) SELECT
CONCAT(branchcode,"D"),CONCAT(branchname,"D"),pickup_location FROM branches;
  INSERT INTO items
(biblionumber,biblioitemnumber,barcode,itype,homebranch,holdingbranch) SELECT
1,1,CONCAT("test-",branchcode),'BKS',branchcode,branchcode FROM branches;
4 - Set systempreferences:
    UseBranchTransferLimits = 'enforce'
     BranchTransferLimitsType = 'item type'
5 - Find the bib and click the holds tab
6 - Wait for a long time, it shoudl eventually load
7 - Apply patch and restart al the things
8 - Load the page again, it should be much faster

Signed-off-by: Andrew Fuerste-Henry <andrew at bywatersolutions.com>

Signed-off-by: Bob Bennhoff <bbennhoff at clicweb.org>

-- 
You are receiving this mail because:
You are watching all bug changes.


More information about the Koha-bugs mailing list