Increase LocalFile lock() timeout and improve error message
authorAaron Schulz <aschulz@wikimedia.org>
Thu, 12 May 2016 22:52:56 +0000 (15:52 -0700)
committerAaron Schulz <aschulz@wikimedia.org>
Thu, 12 May 2016 22:52:56 +0000 (15:52 -0700)
Bug: T132921
Change-Id: Iaec861475b4b6ec91a824672fb81ed5a8eb2b6a9

includes/filerepo/file/LocalFile.php

index f7275fc..2a15fd7 100644 (file)
@@ -1920,12 +1920,15 @@ class LocalFile extends File {
                        // Also, that would cause contention on INSERT of similarly named rows.
                        $backend = $this->getRepo()->getBackend();
                        $lockPaths = [ $this->getPath() ]; // represents all versions of the file
-                       $status = $backend->lockFiles( $lockPaths, LockManager::LOCK_EX, 5 );
+                       $start = microtime( true );
+                       $status = $backend->lockFiles( $lockPaths, LockManager::LOCK_EX, 10 );
+                       $waited = microtime( true ) - $start;
                        if ( !$status->isGood() ) {
                                if ( $this->lockedOwnTrx ) {
                                        $dbw->rollback( __METHOD__ );
                                }
-                               throw new LocalFileLockError( "Could not acquire lock for '{$this->getName()}.'" );
+                               throw new LocalFileLockError(
+                                       "Could not acquire lock for '{$this->getName()}' ($waited sec)." );
                        }
                        // Release the lock *after* commit to avoid row-level contention
                        $this->locked++;