]> git.koha-community.org Git - koha.git/commit
Bug 14736 - AllowRenewalIfOtherItemsAvailable slows circulation down in case of a...
authorKyle M Hall <kyle@bywatersolutions.com>
Wed, 24 Aug 2016 11:13:48 +0000 (11:13 +0000)
committerMason James <mtj@kohaaloha.com>
Mon, 12 Dec 2016 01:54:14 +0000 (14:54 +1300)
commit834d2d827cc9a9e45c97bca70d74b111ca685d12
tree97a741a4521f6ce46d46ae84c97c10fbaf941700
parent7c804558c24201d4209cdf07cc73fd113a64bc27
Bug 14736 - AllowRenewalIfOtherItemsAvailable slows circulation down in case of a record with many items and many holds

If the AllowRenewalIfOtherItemsAvailable sys pref is set to allow, and a
borrower has an item checked out that has many items {30+} AND many
holds {70+) on it, loading the checkouts table for this borrower takes
FOREVER to load. The load time takes forever, because of the
factoring that happens to determine if an item is truly
available for renewal.

This patch swaps the use of GetMemberDetails for GetMember
and reorders the subroutine calls to check each items' renewability
from fastest to slowest.

In a test case, the results of pre patch were:
Start of loop: 2016-08-24T11:05:14
End of loop:   2016-08-24T11:05:29
Resulting in 15 seconds being spent in the loop

Post patch results were:
Start of loop: 2016-08-24T11:08:43
End of loop:   2016-08-24T11:08:48
Resulting in only 5 seconds being spent in the loop!

Test Plan:
1) Apply this patch
2) Note there are no changes in functionality for the renewals column of
   the patron checkouts table.

If you wish to go further and test the performance benefit:
1) Create a record with 50 items and 100 holds ( 50 waiting, 50 unfilled )
2) Check out one of the waiting holds to a patron
3) Time the amount of time it takes for the checkouts table to load
4) Apply this patch
5) Repeat step 3, you should see an improvement in load time

Signed-off-by: Jesse Maseto <jesse@bywatersolutions.com>
Signed-off-by: Jonathan Druart <jonathan.druart@biblibre.com>
Signed-off-by: Mason James <mtj@kohaaloha.com>
C4/Circulation.pm