diff options
author | Aaron Schulz <aschulz@wikimedia.org> | 2012-06-02 15:13:31 -0700 |
---|---|---|
committer | Aaron Schulz <aschulz@wikimedia.org> | 2012-06-02 15:13:31 -0700 |
commit | 2f06a9931a42daddaccba5970c3acb1ca62456b4 (patch) | |
tree | f02696f4d022e93c6d7583b82bee23487c3b3fba /includes/filerepo/backend/lockmanager | |
parent | 7358c7340db813b5fe478f1449b59055080c528b (diff) | |
download | mediawikicore-2f06a9931a42daddaccba5970c3acb1ca62456b4.tar.gz mediawikicore-2f06a9931a42daddaccba5970c3acb1ca62456b4.zip |
Fixed destructor in FSLockManager to clear all the locks.
Change-Id: I019d24c19f317eb649b5a0415618b453e1ea171b
Diffstat (limited to 'includes/filerepo/backend/lockmanager')
-rw-r--r-- | includes/filerepo/backend/lockmanager/FSLockManager.php | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/includes/filerepo/backend/lockmanager/FSLockManager.php b/includes/filerepo/backend/lockmanager/FSLockManager.php index 4f3b9596ec18..2b727a8fd3ea 100644 --- a/includes/filerepo/backend/lockmanager/FSLockManager.php +++ b/includes/filerepo/backend/lockmanager/FSLockManager.php @@ -239,11 +239,15 @@ class FSLockManager extends LockManager { return "{$this->lockDir}/{$hash}.lock"; } + /** + * Make sure remaining locks get cleared for sanity + */ function __destruct() { - // Make sure remaining locks get cleared for sanity - foreach ( $this->locksHeld as $path => $locks ) { - $this->doSingleUnlock( $path, self::LOCK_EX ); - $this->doSingleUnlock( $path, self::LOCK_SH ); + while ( count( $this->locksHeld ) ) { + foreach ( $this->locksHeld as $path => $locks ) { + $this->doSingleUnlock( $path, self::LOCK_EX ); + $this->doSingleUnlock( $path, self::LOCK_SH ); + } } } } |