From: Tim Starling Date: Tue, 2 Apr 2013 22:47:53 +0000 (+1100) Subject: In SqlBagOStuff::getMulti(), catch connect errors X-Git-Tag: 1.31.0-rc.0~20125^2 X-Git-Url: http://git.cyclocoop.org/%7B%24www_url%7Dadmin/compta/operations/?a=commitdiff_plain;h=94072842538bf63a994db352aa242a8885aa12be;p=lhc%2Fweb%2Fwiklou.git In SqlBagOStuff::getMulti(), catch connect errors This case was somehow neglected in Ifba0d276. The other methods work correctly. Change-Id: If29f0212f07c13bd72469c580bb096a2a41a96b5 --- diff --git a/includes/objectcache/SqlBagOStuff.php b/includes/objectcache/SqlBagOStuff.php index 87f787d8cd..b6bf3f8b41 100644 --- a/includes/objectcache/SqlBagOStuff.php +++ b/includes/objectcache/SqlBagOStuff.php @@ -222,8 +222,8 @@ class SqlBagOStuff extends BagOStuff { $dataRows = array(); foreach ( $keysByTable as $serverIndex => $serverKeys ) { - $db = $this->getDB( $serverIndex ); try { + $db = $this->getDB( $serverIndex ); foreach ( $serverKeys as $tableName => $tableKeys ) { $res = $db->select( $tableName, array( 'keyname', 'value', 'exptime' ), @@ -244,10 +244,10 @@ class SqlBagOStuff extends BagOStuff { if ( isset( $dataRows[$key] ) ) { // HIT? $row = $dataRows[$key]; $this->debug( "get: retrieved data; expiry time is " . $row->exptime ); - $db = $this->getDB( $row->serverIndex ); - if ( $this->isExpired( $db, $row->exptime ) ) { // MISS - $this->debug( "get: key has expired, deleting" ); - try { + try { + $db = $this->getDB( $row->serverIndex ); + if ( $this->isExpired( $db, $row->exptime ) ) { // MISS + $this->debug( "get: key has expired, deleting" ); $db->begin( __METHOD__ ); # Put the expiry time in the WHERE condition to avoid deleting a # newly-inserted value @@ -255,12 +255,12 @@ class SqlBagOStuff extends BagOStuff { array( 'keyname' => $key, 'exptime' => $row->exptime ), __METHOD__ ); $db->commit( __METHOD__ ); - } catch ( DBQueryError $e ) { - $this->handleWriteError( $e, $row->serverIndex ); + $values[$key] = false; + } else { // HIT + $values[$key] = $this->unserialize( $db->decodeBlob( $row->value ) ); } - $values[$key] = false; - } else { // HIT - $values[$key] = $this->unserialize( $db->decodeBlob( $row->value ) ); + } catch ( DBQueryError $e ) { + $this->handleWriteError( $e, $row->serverIndex ); } } else { // MISS $values[$key] = false;