From: Aaron Schulz Date: Fri, 15 Feb 2013 04:18:42 +0000 (-0800) Subject: [BagOStuff] De-breakified cas() for SqlBagOStuff. X-Git-Tag: 1.31.0-rc.0~20679 X-Git-Url: https://git.cyclocoop.org/%7B%24www_url%7Dadmin/compta/banques/ajouter.php?a=commitdiff_plain;h=0b442a82e8824bec5cbf59dec1a1371131bc8f2d;p=lhc%2Fweb%2Fwiklou.git [BagOStuff] De-breakified cas() for SqlBagOStuff. * Seemed to be a functional merge conflict with sharding code. Change-Id: I1e49790f6b82b09ea2cd6606ca918f0a620a191f --- diff --git a/includes/objectcache/SqlBagOStuff.php b/includes/objectcache/SqlBagOStuff.php index bae1b7525d..5cc02d35a8 100644 --- a/includes/objectcache/SqlBagOStuff.php +++ b/includes/objectcache/SqlBagOStuff.php @@ -324,28 +324,28 @@ class SqlBagOStuff extends BagOStuff { * @return bool */ public function cas( $casToken, $key, $value, $exptime = 0 ) { - $db = $this->getDB(); - $exptime = intval( $exptime ); - - if ( $exptime < 0 ) { - $exptime = 0; - } + list( $serverIndex, $tableName ) = $this->getTableByKey( $key ); + try { + $db = $this->getDB( $serverIndex ); + $exptime = intval( $exptime ); - if ( $exptime == 0 ) { - $encExpiry = $this->getMaxDateTime(); - } else { - if ( $exptime < 3.16e8 ) { # ~10 years - $exptime += time(); + if ( $exptime < 0 ) { + $exptime = 0; } - $encExpiry = $db->timestamp( $exptime ); - } - try { + if ( $exptime == 0 ) { + $encExpiry = $this->getMaxDateTime( $db ); + } else { + if ( $exptime < 3.16e8 ) { # ~10 years + $exptime += time(); + } + $encExpiry = $db->timestamp( $exptime ); + } $db->begin( __METHOD__ ); // (bug 24425) use a replace if the db supports it instead of // delete/insert to avoid clashes with conflicting keynames $db->update( - $this->getTableByKey( $key ), + $tableName, array( 'keyname' => $key, 'value' => $db->encodeBlob( $this->serialize( $value ) ), @@ -354,7 +354,9 @@ class SqlBagOStuff extends BagOStuff { array( 'keyname' => $key, 'value' => $db->encodeBlob( $this->serialize( $casToken ) ) - ), __METHOD__ ); + ), + __METHOD__ + ); $db->commit( __METHOD__ ); } catch ( DBQueryError $e ) { $this->handleWriteError( $e );