aboutsummaryrefslogtreecommitdiffstats
path: root/includes/filerepo/backend/lockmanager
diff options
context:
space:
mode:
authorAaron Schulz <aschulz@wikimedia.org>2012-06-02 15:13:31 -0700
committerAaron Schulz <aschulz@wikimedia.org>2012-06-02 15:13:31 -0700
commit2f06a9931a42daddaccba5970c3acb1ca62456b4 (patch)
treef02696f4d022e93c6d7583b82bee23487c3b3fba /includes/filerepo/backend/lockmanager
parent7358c7340db813b5fe478f1449b59055080c528b (diff)
downloadmediawikicore-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.php12
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 );
+ }
}
}
}