Koha-clms/Koha
Jacek Ablewicz 2b39cc7fff Bug 16166: Improve L1 cache performance and safety
Bug 16044 introduced two-level caching mechanism to Koha::Cache. By
default, get_from_cache() returns a deep copy of the data structures
stored in L1 cache (aka "safe mode"). For extremely big and/or complex
data structures (like MARC framework hash-of-hashes-of-hashes returned
by GetMarcStructure() ), deep-cloning is currently sub-optimal;
this patch addresses that particular issue. It also provides an
ability to intermix "safe" and "unsafe" cache feches, in such
way that they don't interfere with each other (i.e., eliminating
the risk involved with "unsafe" calls possibly compromising
further "safe" calls).

Test plan:

1) apply patch
2) flush L2 cache if necessary (restart memcached daemon)
3) profile GetMarcStructure() calls before / after patch, e.g. by
running some script which calls it often (like catalogue search
w/ XSLT processing turned on, etc.) - GetMarcStructure() should be
faster than before, in all possible circumstances (eg. 18 msec
per call -> 10 msec p/call)
4) after testing, before returning to the master branch, flush L2 cache
again (restart memcached daemon) - otherwise all system preferences
returned from L2 cache would be suffixed with '-CF0'

Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>

Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>

Signed-off-by: Jesse Weaver <jweaver@bywatersolutions.com>
2016-07-11 15:23:53 -06:00
..
Account Bug 15675: Fix conflict with bug 15446 (type vs _type) 2016-03-02 03:24:46 +00:00
Acquisition Bug 15531: (followup) Use a quantity of 1, not null, for standing orders 2016-04-29 13:07:18 +00:00
Authority Bug 15446: (follow-up) Rename Koha::Object[s]->type with _type 2016-02-12 12:35:57 -07:00
BiblioUtils Bug 12478: fix some issues on rebase 2016-04-26 20:20:09 +00:00
Cache Bug 16088: Introduce Koha::Cache::Memory::Lite to cache the language 2016-06-04 07:43:22 +00:00
Config Bug 11998: Use Koha::Cache to cache sysprefs 2016-03-15 07:08:28 +00:00
Edifact Bug 7736 [QA Followup] - Fix spelling and pod errors 2016-04-01 20:03:19 +00:00
ElasticSearch Bug 12748: (QA followup) fix several tiny QA tools warnings 2016-04-26 20:20:13 +00:00
Exporter Bug 15380: Move Koha::Authority to Koha::MetadataRecord::Authority 2015-12-31 18:50:41 +00:00
Filter/MARC Bug 15870: potential follow up to comment #8 2016-03-24 20:15:40 +00:00
Indexer Revert Bug 11081 - Port Koha::Contrib::Tamil indexer into Koha code base 2016-03-01 16:56:35 +00:00
Item/Search Bug 11425: Add unit tests 2014-11-04 19:10:28 -03:00
List Bug 15065: (follow-up) update license header 2013-10-14 21:50:10 +00:00
MetadataRecord Bug 16708 - (QA followup) Fix pod copy/paste error 2016-06-24 11:59:40 +00:00
Misc Bug 16011: $VERSION - Remove use vars qw(); 2016-03-24 17:20:39 +00:00
Number Bug 16768 - Add official number format for Switzerland: 1'234'567.89 2016-06-24 14:00:03 +00:00
OAI/Server Bug 15527: Add a stylesheet for OAI-PMH to aid usability 2016-03-24 17:28:38 +00:00
Patron Bug 14757 [QA Followup] - Don't overload new for Modifications 2016-07-08 13:47:42 +00:00
Plugins Bug 16502: Table koha_plugin_com_bywatersolutions_kitchensink_mytable not always dropped after running Plugin.t 2016-06-17 14:32:39 +00:00
QueryParser/Driver Bug 15258: Fix Perl scripts declaring unused variables 2015-12-30 17:24:45 -07:00
REST Bug 16271: Allow more filters on /api/v1/holds 2016-07-08 14:18:19 +00:00
RecordProcessor Bug 16011: $VERSION - Remove the $VERSION init 2016-03-24 17:20:28 +00:00
SMS Bug 15548 [QA Followup] - More new uses of Koha::Borrower 2016-03-03 14:39:00 -07:00
Schema/Result Bug 6906 - DBRev 16.06.00.008 2016-07-08 13:40:42 +00:00
SearchEngine Bug 16489: ES code incorrectly refers to Moose 2016-05-12 16:06:18 -06:00
Sitemapper Bug 11190: (QA followup) for tests on jenkins 2015-08-31 10:32:34 -03:00
Subscription Bug 15446: (follow-up) Rename Koha::Object[s]->type with _type 2016-02-12 12:35:57 -07:00
SuggestionEngine Bug 9978: Replace license header with the correct license (GPLv3+) 2015-04-20 09:59:38 -03:00
Template/Plugin Bug 12478: fix issues caused by rebasing 2016-04-26 20:20:06 +00:00
Util Bug 8064: Merge several biblios 2015-11-09 15:08:57 -03:00
AdditionalField.pm Bug 10855: Remove additional field values when subscription is removed 2015-10-02 15:10:31 -03:00
AudioAlert.pm Bug 15446: Rename Koha::Object[s]->type with _type 2016-02-12 12:35:57 -07:00
AudioAlerts.pm Bug 15446: Rename Koha::Object[s]->type with _type 2016-02-12 12:35:57 -07:00
AuthUtils.pm Bug 16011: $VERSION - Remove the $VERSION init 2016-03-24 17:20:28 +00:00
AuthorisedValue.pm Bug 12478: Add Koha::AuthorisedValue[s] class 2016-04-26 20:20:10 +00:00
AuthorisedValues.pm Bug 12478: Add Koha::AuthorisedValue[s] class 2016-04-26 20:20:10 +00:00
Authorities.pm Bug 15446: (follow-up) Rename Koha::Object[s]->type with _type 2016-02-12 12:35:57 -07:00
Authority.pm Bug 16708: Fix authority reindex for ElasticSearch 2016-06-24 11:59:40 +00:00
Biblio.pm Bug 14694 - Make decreaseloanHighHolds more flexible 2016-03-07 17:48:51 +00:00
BiblioFramework.pm Bug 15446: (follow-up) Rename Koha::Object[s]->type with _type 2016-02-12 12:35:57 -07:00
BiblioFrameworks.pm Bug 14889: Fix typo in Koha/BiblioFrameworks.pm 2016-03-03 20:32:47 +00:00
BiblioUtils.pm Bug 12748: (QA followup) fix several tiny QA tools warnings 2016-04-26 20:20:13 +00:00
Biblioitem.pm Bug 15446: Rename Koha::Object[s]->type with _type 2016-02-12 12:35:57 -07:00
Biblioitems.pm Bug 15446: Rename Koha::Object[s]->type with _type 2016-02-12 12:35:57 -07:00
Biblios.pm Bug 15446: Rename Koha::Object[s]->type with _type 2016-02-12 12:35:57 -07:00
Cache.pm Bug 16166: Improve L1 cache performance and safety 2016-07-11 15:23:53 -06:00
Calendar.pm Bug 15333: [QA Follow-up] Add few tests 2016-05-25 22:18:28 +00:00
Checkout.pm Bug 14757 - Allow the use of Template Toolkit syntax for slips and notices 2016-07-08 13:47:42 +00:00
Checkouts.pm Bug 14757 - Allow the use of Template Toolkit syntax for slips and notices 2016-07-08 13:47:42 +00:00
Cities.pm Bug 15446: Rename Koha::Object[s]->type with _type 2016-02-12 12:35:57 -07:00
City.pm Bug 15446: Rename Koha::Object[s]->type with _type 2016-02-12 12:35:57 -07:00
Database.pm Bug 16445: Revert changes made by bug 12478 to Koha/Database.pm 2016-05-05 19:51:01 +00:00
DateUtils.pm Bug 16011: $VERSION - Remove comments 2016-03-24 17:20:29 +00:00
EDI.pm Bug 16288: Remove Reference to obsolete EAN syspref 2016-05-16 17:14:56 +00:00
Edifact.pm Bug 7736: Support Ordering via Edifact EDI messages 2016-04-01 20:03:17 +00:00
ElasticSearch.pm Bug 12478: Move mapping attributes to the join table 2016-04-26 20:20:11 +00:00
Email.pm Bug 9530: Adding a new Koha::Email module 2014-10-27 10:38:14 -03:00
Exceptions.pm Bug 14048: Add RefundLostItemFeeRule table and classes 2016-07-07 10:37:01 -06:00
FrameworkPlugin.pm Bug 9006: Remove AUTOLOAD in C4::Context 2015-07-20 10:11:41 -03:00
Hold.pm Bug 15548: Move new patron related code to Patron* 2016-03-03 14:38:26 -07:00
Holds.pm Bug 15446: Rename Koha::Object[s]->type with _type 2016-02-12 12:35:57 -07:00
I18N.pm Bug 11848: (follow-up) update license statment 2014-05-05 04:51:42 +00:00
Issue.pm Bug 16086: Add Issues Koha object. 2016-04-07 00:31:21 +00:00
Issues.pm Bug 16086: Add Issues Koha object. 2016-04-07 00:31:21 +00:00
IssuingRule.pm Bug 15446: (follow-up) Rename Koha::Object[s]->type with _type 2016-02-12 12:35:57 -07:00
IssuingRules.pm Bug 15446: (follow-up) Rename Koha::Object[s]->type with _type 2016-02-12 12:35:57 -07:00
Item.pm Bug 15548: Move new patron related code to Patron* 2016-03-03 14:38:26 -07:00
ItemType.pm Bug 12478: Add Koha::ItemType[s] classes 2016-04-26 20:20:10 +00:00
ItemTypes.pm Bug 12478: Add Koha::ItemType[s] classes 2016-04-26 20:20:10 +00:00
Items.pm Bug 15446: Rename Koha::Object[s]->type with _type 2016-02-12 12:35:57 -07:00
Libraries.pm Bug 15446 [QA Followup] - Update new classes 2016-02-12 12:35:57 -07:00
Library.pm Bug 15446 [QA Followup] - Update new classes 2016-02-12 12:35:57 -07:00
LibraryCategories.pm Bug 15446 [QA Followup] - Update new classes 2016-02-12 12:35:57 -07:00
LibraryCategory.pm Bug 15629: Koha::Libraries - Remove GetBranchesInCategory (1) 2016-02-24 03:55:05 +00:00
Linktracker.pm Bug 8917 : [ Sign followup ] Track clicks to links external to Koha 2013-03-07 11:14:25 -05:00
Localization.pm Bug 15446: Rename Koha::Object[s]->type with _type 2016-02-12 12:35:57 -07:00
Localizations.pm Bug 15446: Rename Koha::Object[s]->type with _type 2016-02-12 12:35:57 -07:00
Logger.pm Bug 14167: (QA followup) use warn instead of just STDERR 2015-07-21 10:50:17 -03:00
MetaSearcher.pm Bug 15258: Fix Perl scripts declaring unused variables 2015-12-30 17:24:45 -07:00
MetadataIterator.pm Bug 12478 - authorities can now be stored in ES 2016-04-26 20:20:03 +00:00
MetadataRecord.pm Bug 15578: Make sure all params will be taken into account when instantiating 2016-01-23 18:28:49 +00:00
News.pm Bug 14757 - Allow the use of Template Toolkit syntax for slips and notices 2016-07-08 13:47:42 +00:00
NewsItem.pm Bug 14757 - Allow the use of Template Toolkit syntax for slips and notices 2016-07-08 13:47:42 +00:00
NorwegianPatronDB.pm Bug 16011: $VERSION - Remove comments 2016-03-24 17:20:29 +00:00
Object.pm Bug 15446: Rename Koha::Object[s]->type with _type 2016-02-12 12:35:57 -07:00
Objects.pm Bug 12478: Move mapping attributes to the join table 2016-04-26 20:20:11 +00:00
OldIssue.pm Bug 16087: Add Koha::OldIssues objects. 2016-04-07 00:18:40 +00:00
OldIssues.pm Bug 16087: Add Koha::OldIssues objects. 2016-04-07 00:18:40 +00:00
Patron.pm Bug 6906: Follow coding guidelines in terminology. 2016-07-08 13:40:34 +00:00
Patrons.pm Bug 15548: Move new patron related code to Patron* 2016-03-03 14:38:26 -07:00
Plugins.pm Bug 15630 - Make Edifact module pluggable 2016-04-01 21:31:28 +00:00
RecordProcessor.pm Bug 15870: potential follow up to comment #8 2016-03-24 20:15:40 +00:00
RefundLostItemFeeRule.pm Bug 14048: (QA followup) Default to 1 if no default rule 2016-07-07 10:37:01 -06:00
RefundLostItemFeeRules.pm Bug 14048: (QA followup) Default to 1 if no default rule 2016-07-07 10:37:01 -06:00
Schema.pm Bug 11891: (follow-up) remove custom storage class 2014-06-19 11:55:03 -03:00
SearchEngine.pm Bug 12478: make things using SimpleSearch use the new version 2016-04-26 20:20:07 +00:00
SearchField.pm Bug 12748: (QA followup) fix several tiny QA tools warnings 2016-04-26 20:20:13 +00:00
SearchFields.pm Bug 12748: (QA followup) fix several tiny QA tools warnings 2016-04-26 20:20:13 +00:00
SearchMarcMap.pm Bug 12748: (QA followup) fix several tiny QA tools warnings 2016-04-26 20:20:13 +00:00
SearchMarcMaps.pm Bug 12748: (QA followup) fix several tiny QA tools warnings 2016-04-26 20:20:13 +00:00
Serial.pm Bug 15446: Rename Koha::Object[s]->type with _type 2016-02-12 12:35:57 -07:00
Serials.pm Bug 15446: Rename Koha::Object[s]->type with _type 2016-02-12 12:35:57 -07:00
SimpleMARC.pm Bug 16011: $VERSION - Remove the $VERSION init 2016-03-24 17:20:28 +00:00
Sitemapper.pm Bug 11190: (QA followup) for tests on jenkins 2015-08-31 10:32:34 -03:00
Subscription.pm Bug 15446: (follow-up) Rename Koha::Object[s]->type with _type 2016-02-12 12:35:57 -07:00
Subscriptions.pm Bug 15446: (follow-up) Rename Koha::Object[s]->type with _type 2016-02-12 12:35:57 -07:00
Suggestion.pm Bug 14757 - Allow the use of Template Toolkit syntax for slips and notices 2016-07-08 13:47:42 +00:00
SuggestionEngine.pm Bug 9978: Replace license header with the correct license (GPLv3+) 2015-04-20 09:59:38 -03:00
Suggestions.pm Bug 14757 - Allow the use of Template Toolkit syntax for slips and notices 2016-07-08 13:47:42 +00:00
Upload.pm Bug 14686: [QA Follow-up] Move allows_add_by to Upload.pm 2016-04-27 16:14:18 +00:00
Virtualshelf.pm Bug 15548: Move new patron related code to Patron* 2016-03-03 14:38:26 -07:00
Virtualshelfcontent.pm Bug 15446: Rename Koha::Object[s]->type with _type 2016-02-12 12:35:57 -07:00
Virtualshelfcontents.pm Bug 15446: Rename Koha::Object[s]->type with _type 2016-02-12 12:35:57 -07:00
Virtualshelfshare.pm Bug 15446: Rename Koha::Object[s]->type with _type 2016-02-12 12:35:57 -07:00
Virtualshelfshares.pm Bug 15446: Rename Koha::Object[s]->type with _type 2016-02-12 12:35:57 -07:00
Virtualshelves.pm Bug 15446: Rename Koha::Object[s]->type with _type 2016-02-12 12:35:57 -07:00
XSLT_Handler.pm Bug 13262 - Add parameters to XSLT Handler transform method 2015-02-05 15:24:29 -03:00