Go to file
Jonathan Druart 985debedec Bug 11112: Koha::Calendar needs some caching
Each time a Koha::Calendar object is created, its constructor retrieves
all holidays from the database and create a DateTime::Set object with
all holidays.

[RM note: I've observed that the time it takes DateTime::Set to be
 initialized with a set of dates increases faster than linearly with
 the number of dates.  I think this, more than just retrieving a bunch
 of holidays from the database, is what is most expensive.]

In one of our customer's DB, there are 11085 special_holidays and 598
repeatable_holidays. When a loan is returned, there are 3 calls to
Koha::Calendar->new.

This patch adds caching of the holiday list via package-level variables
as well as lazy fetching of the holidays. (RM note: this means that if
a persistance engine is in use, updates to the holiday list will not
be reflected during checkout.  I'm allowing this breakage for now on
the plan that bug 8089 will be fixed soon and we can switch to using
Koha::Cache).

Nytprof benchmarks (on a 3.8.x branch):
In DateTime::Set->from_datetimes:
3 times (5.49ms+4.90s) by Koha::Calendar::_init at line 80 of Koha/Calendar.pm, avg 1.63s/call
on a total of 7.67s (of 10.2s), executing 6353333 statements and 3031273 subroutine calls in 147 source files and 36 string evals.
for the circulation/return.pl page.

Comparing the access_log:

Without the patch:
checkout: time=2759838
checkin: time=1832751

Without the patch and with overdues:
checkout: time=1086727 + time=1144706
checkin: time=3928854 (x2)

With the patch and overdues:
checkout: time=1077839 + time=1060886
checkin: time=2420898

Test plan:
- checkout an item with a return date < today
- checkin the item and verify the suspension period is well calculated
  (depending on the holidays).
- prove t/db_dependent/Holidays.t
- t/Calendar.t

Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
Signed-off-by: Brendan Gallagher <brendan@bywatersolutions.com>
Signed-off-by: Galen Charlton <gmc@esilibrary.com>
(cherry picked from commit a98b239dbf)
Signed-off-by: Fridolin SOMERS <fridolin.somers@biblibre.com>
2013-12-24 11:52:42 +01:00
C4 Bug 11032: Check a valid MARC::Record passed to Biblio 2013-12-24 11:50:36 +01:00
Koha Bug 11112: Koha::Calendar needs some caching 2013-12-24 11:52:42 +01:00
OpenILS Bug 9239 QA follow-up: remove stray debug code 2013-03-16 21:32:34 -04:00
acqui Bug 7791: (follow-up) add warning after deletion if some records were not deleted 2013-12-13 16:11:08 +01:00
admin Bug 11286: fix bug preventing adding a new subfield to an authority framework 2013-12-13 15:20:31 +01:00
authorities Bug 10808: (follow-up) reformat auth_finder.pl 2013-12-24 11:04:40 +01:00
basket Bug 10605: fix encoding issue on basket email (INTRANET) 2013-12-24 11:10:14 +01:00
catalogue Bug 9780: restrict the ability to delete a bib record associated with an order 2013-10-31 23:58:40 +00:00
cataloguing Bug 10661: format mandatory item fields the same on all forms 2013-12-24 11:01:56 +01:00
circ Bug 2693: add ability to filter by reviewer name on tag review page 2013-12-13 16:06:16 +01:00
course_reserves bug 8215: (followup) avoid spurious warning in Apache log 2013-05-21 16:01:08 -07:00
debian Bug 10670: ensure koha-start-zebra sets problem permissions for logs 2013-11-14 23:53:10 +00:00
docs Bug 7143: Cleaning up docs/history.txt 2013-11-27 15:44:59 +00:00
errors Housekeeping in errors scripts 2010-05-12 07:29:03 -04:00
etc Bug 9830: Fix some indexes in UNIMARC item indexing 2013-10-21 15:38:49 +00:00
install_misc Bug 8798: DBIx::Class base classes for all Koha tables 2013-10-14 21:07:24 +00:00
installer Bug 10970: DBRev 3.14.01.001 2013-12-24 10:26:36 +01:00
koha-tmpl Bug 10808: make authority search form retain drop-down selections 2013-12-24 11:04:28 +01:00
labels Bug 11222: fix crash that can occur in search for items to add to label batch 2013-12-13 09:53:16 +01:00
members Bug 11207: fix issue where SMS number couldn't be cleared when editing patron 2013-12-13 08:24:29 +01:00
misc Translation updates for 3.14.1 release 2013-12-23 17:26:59 +01:00
offline_circ Bug 10240: (follow-up) don't display patrons as lost or gone-no-address incorrectly 2013-10-11 01:57:05 +00:00
opac Bug 10605: fix encoding issue in basket email (OPAC) 2013-12-24 11:10:08 +01:00
patron_lists Bug 10565: (follow-up) add new user permission for patron list management 2013-10-14 22:43:03 +00:00
patroncards Bug 10636 - patronimage should have borrowernumber as PK, not cardnumber 2013-10-14 21:08:02 +00:00
plugins Bug 7804 - Add Koha Plugin System - QA Followup 2 2013-03-20 14:50:19 -04:00
reports Bug 10718: fix items with no checkouts report 2013-09-08 20:04:43 +00:00
reserve Bug 10663: QA Followup: Typo in comment in renewscript 2013-08-16 01:39:16 +00:00
reviews Bug 1623 - Provide view of approved comments 2011-12-27 18:26:50 +01:00
rotating_collections Bug 9605: rotating collections permissions are wrong 2013-03-30 22:11:05 -04:00
selenium Adding selenium tests for filterMembers 2009-09-30 11:30:37 +02:00
serials Bug 11091: (follow-up) perltidy on serials/subscription-bib-search.pl 2013-12-17 17:07:34 +01:00
services Bug 7178: Acquisition item creation improvement 2012-03-26 11:07:23 +02:00
skel Bug 7804 - Add Koha Plugin System 2013-03-20 14:49:47 -04:00
sms Bug 2505 - Add commented use warnings where missing in the sms/ directory 2010-04-21 20:25:08 +12:00
suggestion Bug 9307: QA Followup 2013-06-19 07:19:39 -07:00
svc Bug 7813: (follow-up) improvements for deleting local cover images 2013-09-21 18:11:13 +00:00
t Bug 11032: Check a valid MARC::Record passed to Biblio 2013-12-24 11:50:36 +01:00
tags Bug 10730: Use DataTables on the tag review page 2013-09-25 16:47:59 +00:00
test Bug 5449: JSON malformed in Koha - Blocker with jQuery 1.4.x 2011-03-12 08:53:41 +13:00
tmp/modified_authorities
…
tools Bug 10661: format mandatory item fields the same on all forms 2013-12-24 11:01:56 +01:00
virtualshelves Bug 10853: All existing routing to get a CSV should return a MARC csv 2013-10-11 02:16:33 +00:00
xt Bug 11304: fix display of detail page holdings tab in translated Bootstrap theme 2013-12-13 14:32:51 +01:00
.htaccess Fix file permissions: if it is not a script, it should not be executable. 2010-04-16 00:40:34 -04:00
.mailmap 7439 Mailmap for master 2012-01-27 12:27:58 +01:00
INSTALL Bug 7759, update of install files to use background indexing (and some whitespace tidy) 2012-04-20 16:11:52 +02:00
INSTALL.debian Bug 8092 follow-up: Add optional dependency on CHI 2012-06-09 13:08:18 +02:00
INSTALL.fedora7 Bug 7440 - Remove NoZebra vestiges 2013-03-19 21:17:04 -04:00
INSTALL.opensuse Bug 7759, update of install files to use background indexing (and some whitespace tidy) 2012-04-20 16:11:52 +02:00
INSTALL.ubuntu Bug 7764: (follow-up) editorial tweaks 2013-10-04 16:27:55 +00:00
LICENSE Bug 9440 - update Koha's LICENSE file from GPL2 to GPL3 2013-02-12 08:52:10 -05:00
MANIFEST.SKIP Bug 9546 : Updating make manifest tardist 2013-02-06 23:54:46 -05:00
Makefile.PL Bug 10565: (follow-up) ensure that new patron_lists/ CGI directory is installed 2013-10-14 22:44:23 +00:00
README Bug 9440 - update Koha's LICENSE file from GPL2 to GPL3 2013-02-12 08:52:10 -05:00
README.robots Bug 6411 add another example to README.robots 2011-07-05 14:48:05 +12:00
about.pl Bug 10915: (QA followup) warn if cannot read history.txt 2013-09-20 17:25:57 +00:00
changelanguage.pl Bug 6755 Problems with switching languages 2011-09-23 09:47:09 +12:00
edithelp.pl 7368 Typo in edithelp.pl warning 2013-04-18 09:47:58 -04:00
fix-perl-path.PL installer: improvements to fix-path-perl.PL on Win32 2007-12-20 19:20:12 -06:00
help.pl Bug 11238: contruct links to the appropriate manual version dynamically 2013-12-13 09:23:01 +01:00
install-CPAN.pl Bug 5370: Fix all the references to koha.org 2010-11-08 09:41:49 +13:00
koha_perl_deps.pl bug 10548: fix count of missing required dependencies by koha_perl_deps.pl 2013-07-11 14:03:32 +00:00
kohaversion.pl Bug 10970: DBRev 3.14.01.001 2013-12-24 10:26:36 +01:00
mainpage.pl Bug 10080 - Change system pref IndependantBranches to IndependentBranches 2013-05-22 07:58:23 -07:00
rewrite-config.PL Bug 10712: Save missing config variables to install log 2013-08-13 14:14:30 +00:00

README

Koha is a free software integrated library system.

Koha is distributed under the GNU GPL version 3 or later.
Please read the file LICENSE for more details.

To install or upgrade Koha, please see the INSTALL file appropriate
to your platform.

Report bugs at http://bugs.koha-community.org/

Visit the Koha Project website at http://www.koha-community.org/