add locks in the scanner to prevent multiple scanners running on the same files

This commit is contained in:
Robin Appelman 2016-04-22 16:07:08 +02:00
parent 5925ab99f8
commit 51f5edd749
1 changed files with 2 additions and 0 deletions

View File

@ -296,6 +296,7 @@ class Scanner extends BasicEmitter implements IScanner {
}
if ($lock) {
if ($this->storage->instanceOfStorage('\OCP\Files\Storage\ILockingStorage')) {
$this->storage->acquireLock('scanner::' . $path, ILockingProvider::LOCK_EXCLUSIVE, $this->lockingProvider);
$this->storage->acquireLock($path, ILockingProvider::LOCK_SHARED, $this->lockingProvider);
}
}
@ -307,6 +308,7 @@ class Scanner extends BasicEmitter implements IScanner {
if ($lock) {
if ($this->storage->instanceOfStorage('\OCP\Files\Storage\ILockingStorage')) {
$this->storage->releaseLock($path, ILockingProvider::LOCK_SHARED, $this->lockingProvider);
$this->storage->releaseLock('scanner::' . $path, ILockingProvider::LOCK_EXCLUSIVE, $this->lockingProvider);
}
}
return $data;