ttl for memcache locking backends that support it

This commit is contained in:
Robin Appelman 2015-12-09 14:41:15 +01:00
parent 0a80bf5573
commit 693a3c353e
3 changed files with 11 additions and 2 deletions

View file

@ -28,6 +28,8 @@ use OCP\Lock\ILockingProvider;
* to release any left over locks at the end of the request
*/
abstract class AbstractLockingProvider implements ILockingProvider {
const TTL = 3600; // how long until we clear stray locks in seconds
protected $acquiredLocks = [
'shared' => [],
'exclusive' => []

View file

@ -51,8 +51,6 @@ class DBLockingProvider extends AbstractLockingProvider {
private $sharedLocks = [];
const TTL = 3600; // how long until we clear stray locks in seconds
/**
* Check if we have an open shared lock for a path
*

View file

@ -21,6 +21,7 @@
namespace OC\Lock;
use OCP\IMemcacheTTL;
use OCP\Lock\LockedException;
use OCP\IMemcache;
@ -37,6 +38,12 @@ class MemcacheLockingProvider extends AbstractLockingProvider {
$this->memcache = $memcache;
}
private function setTTL($path) {
if ($this->memcache instanceof IMemcacheTTL) {
$this->memcache->setTTL($path, self::TTL);
}
}
/**
* @param string $path
* @param int $type self::LOCK_SHARED or self::LOCK_EXCLUSIVE
@ -69,6 +76,7 @@ class MemcacheLockingProvider extends AbstractLockingProvider {
throw new LockedException($path);
}
}
$this->setTTL($path);
$this->markAcquire($path, $type);
}
@ -106,6 +114,7 @@ class MemcacheLockingProvider extends AbstractLockingProvider {
throw new LockedException($path);
}
}
$this->setTTL($path);
$this->markChange($path, $targetType);
}
}