@@ -, +, @@ s/and UID// --- Koha/Cache.pm | 33 ++++++++++++++++++++++----------- 1 file changed, 22 insertions(+), 11 deletions(-) --- a/Koha/Cache.pm +++ a/Koha/Cache.pm @@ -40,7 +40,6 @@ use warnings; use Carp; use Module::Load::Conditional qw(can_load); use Koha::Cache::Object; -use C4::Context; use base qw(Class::Accessor); @@ -161,16 +160,28 @@ sub _initialize_memcached { sub _initialize_fastmmap { my ($self) = @_; - my $share_file = join( '-', - "/tmp/sharefile-koha", $self->{'namespace'}, - C4::Context->config('hostname'), C4::Context->config('database'), - "" . getpwuid($>) ); - - $self->{'fastmmap_cache'} = Cache::FastMmap->new( - 'share_file' => $share_file, - 'expire_time' => $self->{'timeout'}, - 'unlink_on_exit' => 0, - ); + my ($cache, $share_file); + + # Temporary workaround to catch fatal errors when: C4::Context module + # is not loaded beforehand, or Cache::FastMmap init fails for whatever + # other reason (e.g. due to permission issues - see Bug 13431) + eval { + $share_file = join( '-', + "/tmp/sharefile-koha", $self->{'namespace'}, + C4::Context->config('hostname'), C4::Context->config('database') ); + + $cache = Cache::FastMmap->new( + 'share_file' => $share_file, + 'expire_time' => $self->{'timeout'}, + 'unlink_on_exit' => 0, + ); + }; + if ( $@ ) { + warn "FastMmap cache initialization failed: $@"; + return; + } + return unless defined $cache; + $self->{'fastmmap_cache'} = $cache; return $self; } --