Bug 21955: Remove Cache::Memory as fallback for L2 cache
authorJonathan Druart <jonathan.druart@bugs.koha-community.org>
Wed, 5 Dec 2018 19:39:02 +0000 (16:39 -0300)
committerJesse Maseto <jesse@bywatersolution.com>
Tue, 18 Dec 2018 18:51:10 +0000 (18:51 +0000)
If Plack is running with several workers we must not use Cache::Memory
as L2 cache.

If a value is set from a worker, it will not be available from other
workers as the Cache::Memory instance is not shared (of course!)

Moreover we now have Koha::Cache::Memory::Lite that does the same job,
so we should not expect performance regressions by removing it.

See also the email sent to koha-devel for more info
http://lists.koha-community.org/pipermail/koha-devel/2018-December/045004.html

Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>
Signed-off-by: Julian Maurice <julian.maurice@biblibre.com>

Signed-off-by: Nick Clemens <nick@bywatersolutions.com>
(cherry picked from commit 4bf033c6d6b2a8bf4d5597b3fdf6355fb7060b60)
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>
(cherry picked from commit 6039f64e53172a046c5b579271df7cf434b20e81)

C4/Installer/PerlDependencies.pm
Koha/Cache.pm

index 670585b..4a2c605 100644 (file)
@@ -267,11 +267,6 @@ our $PERL_DEPS = {
         'required' => '0',
         'min_ver'  => '1.34'
     },
-    'Cache::Memory' => {
-        'usage'    => 'Caching',
-        'required' => '0',
-        'min_ver'  => '2.04'
-    },
     'Net::LDAP::Filter' => {
         'usage'    => 'LDAP Interface Feature',
         'required' => '0',
index be478fa..cf77257 100644 (file)
@@ -103,15 +103,6 @@ sub new {
         $self->{'cache'} = $self->{'fastmmap_cache'};
     }
 
-    # Unless memcache or fastmmap has already been picked, use memory_cache
-    unless ( defined( $self->{'cache'} ) ) {
-        if ( can_load( modules => { 'Cache::Memory' => undef } )
-            && _initialize_memory($self) )
-        {
-                $self->{'cache'} = $self->{'memory_cache'};
-        }
-    }
-
     $ENV{DEBUG} && carp "Selected caching system: " . ($self->{'cache'} // 'none');
 
     return
@@ -177,33 +168,6 @@ sub _initialize_fastmmap {
     return $self;
 }
 
-sub _initialize_memory {
-    my ($self) = @_;
-
-    # Default cache time for memory is _always_ short unless it's specially
-    # defined, to allow it to work reliably in a persistent environment.
-    my $cache = Cache::Memory->new(
-        'namespace'       => $self->{'namespace'},
-        'default_expires' => "$self->{'timeout'} sec" || "10 sec",
-    );
-    $self->{'memory_cache'} = $cache;
-    # Memory cache can't handle complex types for some reason, so we use its
-    # freeze and thaw functions.
-    $self->{ref($cache) . '_set'} = sub {
-        my ($key, $val, $exp) = @_;
-        # Refer to set_expiry in Cache::Entry for why we do this 'sec' thing.
-        $exp = "$exp sec" if defined $exp;
-        # Because we need to use freeze, it must be a reference type.
-        $cache->freeze($key, [$val], $exp);
-    };
-    $self->{ref($cache) . '_get'} = sub {
-        my $res = $cache->thaw(shift);
-        return unless defined $res;
-        return $res->[0];
-    };
-    return $self;
-}
-
 =head2 is_cache_active
 
 Routine that checks whether or not a default caching method is active on this