From f178fd076b90c53f7b45c8f1abbb9df6de5e1122 Mon Sep 17 00:00:00 2001 From: Jacek Ablewicz Date: Wed, 14 Sep 2016 15:33:07 +0200 Subject: [PATCH] Bug 16758 - Caching issues in scripts running in daemon mode As L1 cache does not have expiration mechanism, scripts running in daemon mode (rebuild_zebra.pl -daemon, sip server ?, ...) would not be aware of any possible changes in the data being cached in upstream L2 cache. This patch adds ->flush_L1_caches() call in rebuild_zebra.pl inside daemon mode loop. To test: 1) apply patch 2) ensure that rebuild_zebra.pl -daemon is still working properly, without any noticeable performance degradation 3) stop memcached daemon and try to run rebuild_zebra.pl -daemon again: there should be a warning emitted stating that the script is running in daemon mode but without recommended caching system Signed-off-by: Josef Moravec Signed-off-by: Jonathan Druart Signed-off-by: Kyle M Hall (cherry picked from commit 84dbc80074b5b1ada05b815cba810e4c5fb10dd2) Signed-off-by: Katrin Fischer --- misc/migration_tools/rebuild_zebra.pl | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/misc/migration_tools/rebuild_zebra.pl b/misc/migration_tools/rebuild_zebra.pl index b32f8ba6ad..fe84270b2a 100755 --- a/misc/migration_tools/rebuild_zebra.pl +++ b/misc/migration_tools/rebuild_zebra.pl @@ -26,6 +26,7 @@ use C4::Biblio; use C4::AuthoritiesMarc; use C4::Items; use Koha::RecordProcessor; +use Koha::Caches; use XML::LibXML; use constant LOCK_FILENAME => 'rebuild..LCK'; @@ -63,6 +64,7 @@ my $run_user = (getpwuid($<))[0]; my $wait_for_lock = 0; my $use_flock; my $table = 'biblioitems'; +my $is_memcached = Koha::Caches->get_instance('syspref')->memcached_cache; my $verbose_logging = 0; my $zebraidx_log_opt = " -v none,fatal,warn "; @@ -136,6 +138,9 @@ if ($daemon_mode) { $msg .= "Please do '$0 --help' to see usage.\n"; die $msg; } + unless ($is_memcached) { + warn "Warning: script running in daemon mode, without recommended caching system (memcached).\n"; + } $authorities = 1; $biblios = 1; $process_zebraqueue = 1; @@ -245,7 +250,10 @@ if ($daemon_mode) { if (_flock($LockFH, LOCK_EX|LOCK_NB)) { eval { $dbh = C4::Context->dbh; - do_one_pass() if ( zebraqueue_not_empty() ); + if( zebraqueue_not_empty() ) { + Koha::Caches->flush_L1_caches() if $is_memcached; + do_one_pass(); + } }; if ($@ && $verbose_logging) { warn "Warning : $@\n"; -- 2.39.5