From 4cb78e8f23d239f22252ad28bed9fc37cc860073 Mon Sep 17 00:00:00 2001 From: Chris Cormack Date: Fri, 10 Oct 2014 05:03:01 +1300 Subject: [PATCH] Bug 12005 : Creating a new zebra connection for each time we need one Zebra is not designed to have persistent connections, under cgi this didn't matter the scripts would get a new connection each time, but under plack we try to use dead connections This patch changes it so plack works the same way that cgi did. To test: Apply this patch Do some searches Check everything still works Signed-off-by: Paul Poulain --- C4/Context.pm | 25 +++---------------------- 1 file changed, 3 insertions(+), 22 deletions(-) diff --git a/C4/Context.pm b/C4/Context.pm index 63e8ebe..c87e7e2 100644 --- a/C4/Context.pm +++ b/C4/Context.pm @@ -672,9 +672,7 @@ sub AUTOLOAD $Zconn = C4::Context->Zconn -Returns a connection to the Zebra database for the current -context. If no connection has yet been made, this method -creates one and connects. +Returns a connection to the Zebra database C<$self> @@ -689,25 +687,8 @@ C<$auth> whether this connection has rw access (1) or just r access (0 or NULL) sub Zconn { my ($self, $server, $async, $auth, $piggyback, $syntax) = @_; - #TODO: We actually just ignore the auth and syntax parameter - #It also looks like we are not passing auth, piggyback, syntax anywhere - - my $cache_key = join ('::', (map { $_ // '' } ($server, $async, $auth, $piggyback, $syntax))); - if ( defined($context->{"Zconn"}->{$cache_key}) && (0 == $context->{"Zconn"}->{$cache_key}->errcode()) ) { - return $context->{"Zconn"}->{$cache_key}; - # No connection object or it died. Create one. - }else { - # release resources if we're closing a connection and making a new one - # FIXME: this needs to be smarter -- an error due to a malformed query or - # a missing index does not necessarily require us to close the connection - # and make a new one, particularly for a batch job. However, at - # first glance it does not look like there's a way to easily check - # the basic health of a ZOOM::Connection - $context->{"Zconn"}->{$cache_key}->destroy() if defined($context->{"Zconn"}->{$cache_key}); - - $context->{"Zconn"}->{$cache_key} = &_new_Zconn( $server, $async, $piggyback ); - return $context->{"Zconn"}->{$cache_key}; - } + my $connection = _new_Zconn( $server, $async, $piggyback ); + return $connection; } =head2 _new_Zconn -- 1.9.1