Add value to add() call when locking
authorcsteipp <csteipp@wikimedia.org>
Fri, 10 May 2013 18:19:31 +0000 (11:19 -0700)
committercsteipp <csteipp@wikimedia.org>
Fri, 10 May 2013 19:42:16 +0000 (12:42 -0700)
When BagOStuff::lock() was called, it called $this->add() with only
two parameters, the key and the timeout. But BagOStuff::add() takes
three parameters (key, value, timeout), so all locks got an infinite
timeout.

Change-Id: I82bed11b0b799f2cda13a8a0bd0cd94908b6ce8e

includes/objectcache/BagOStuff.php

index 58ddd6a..857943e 100644 (file)
@@ -170,7 +170,7 @@ abstract class BagOStuff {
         */
        public function lock( $key, $timeout = 60 ) {
                $timestamp = microtime( true ); // starting UNIX timestamp
-               if ( $this->add( "{$key}:lock", $timeout ) ) {
+               if ( $this->add( "{$key}:lock", 1, $timeout ) ) {
                        return true;
                }
 
@@ -186,7 +186,7 @@ abstract class BagOStuff {
                                $sleep *= 2;
                        }
                        usleep( $sleep ); // back off
-                       $locked = $this->add( "{$key}:lock", $timeout );
+                       $locked = $this->add( "{$key}:lock", 1, $timeout );
                } while ( !$locked );
 
                return $locked;