From 01e75000f5c05e2e12911b0429461fadbdc89ae9 Mon Sep 17 00:00:00 2001 From: Jonathan Druart Date: Wed, 4 May 2016 19:43:43 +0100 Subject: [PATCH] Bug 16441: Do not use a package variable to cache C4::Letters::getletter Content-Type: text/plain; charset=utf-8 C4::Letters::getletter use a package variable (%letter) to cache letter returned by the subroutine. I have not found any direct issues caused by that but it is safer to remove it. It won't be a big deal to hit the DBMS to get a valid letter when needed. No test plan here, just confirm that the changes make sense. Signed-off-by: Srdjan Signed-off-by: Marcel de Rooy Confirm that performance loss is just a millisecond or so per subsequent call of getletter. --- C4/Letters.pm | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/C4/Letters.pm b/C4/Letters.pm index f327890..1d0c3c0 100644 --- a/C4/Letters.pm +++ b/C4/Letters.pm @@ -200,12 +200,6 @@ sub GetLettersAvailableForALibrary { } -# FIXME: using our here means that a Plack server will need to be -# restarted fairly regularly when working with this routine. -# A better option would be to use Koha::Cache and use a cache -# that actually works in a persistent environment, but as a -# short-term fix, our will work. -our %letter; sub getletter { my ( $module, $code, $branchcode, $message_transport_type ) = @_; $message_transport_type //= '%'; @@ -218,10 +212,6 @@ sub getletter { } $branchcode //= ''; - if ( my $l = $letter{$module}{$code}{$branchcode}{$message_transport_type} ) { - return { %$l }; # deep copy - } - my $dbh = C4::Context->dbh; my $sth = $dbh->prepare(q{ SELECT * @@ -234,7 +224,6 @@ sub getletter { my $line = $sth->fetchrow_hashref or return; $line->{'content-type'} = 'text/html; charset="UTF-8"' if $line->{is_html}; - $letter{$module}{$code}{$branchcode}{$message_transport_type} = $line; return { %$line }; } -- 1.7.10.4