From 9d5eb6dccc489fda46f66ce36ddef41389b09c19 Mon Sep 17 00:00:00 2001 From: Jonathan Druart Date: Mon, 27 Apr 2020 16:25:32 +0200 Subject: [PATCH] Bug 25292: Flushing L1 on every Z3950 server search This patch flushes the L1 cache on each Z3950 server search. There is no need to flush it in init_handler (when the connection is made), the L1 cache is not accessed (this behaviour goes against what I expected). This means each search will fetch values from the L2 cache (ie memcached) and persist the L1 cache (in Perl memory cache) until the result are returned (or longer?). Test plan: % perl misc/z3950_responder.pl --config-dir=/kohadevbox/koha/etc/z3950 % zoomsh ZOOM>connect localhost:2100 ZOOM>set databaseName biblios ZOOM>search x ZOOM>search x Between the 2 searches you can modify the value of SearchEngine, you will notice that the number of hits is different Signed-off-by: Fridolin Somers Signed-off-by: Nick Clemens --- Koha/Z3950Responder.pm | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/Koha/Z3950Responder.pm b/Koha/Z3950Responder.pm index 4d815985a4..3e1f1d22cd 100644 --- a/Koha/Z3950Responder.pm +++ b/Koha/Z3950Responder.pm @@ -22,6 +22,8 @@ use Modern::Perl; use C4::Biblio qw( GetMarcFromKohaField ); use C4::Koha qw( GetAuthorisedValues ); +use Koha::Caches; + use Net::Z3950::SimpleServer; =head1 NAME @@ -178,6 +180,12 @@ Callback that is called when a new search is performed sub search_handler { my ( $self, $args ) = @_; + my $SearchEngine = C4::Context->preference('SearchEngine'); + # Flushing L1 to make sure the search will be processed using the correct data + Koha::Caches->flush_L1_caches(); + $self->init_handler($args) + if $SearchEngine ne C4::Context->preference('SearchEngine'); + $args->{HANDLE}->search_handler($args); } -- 2.11.0