Use md5 + prefix for file locking keys in memcache
Also trim slashes from paths to make sure the locks are based on the same paths.
This commit is contained in:
parent
0775e9c1ca
commit
8d53dc803f
|
@ -630,7 +630,7 @@ abstract class Common implements Storage {
|
||||||
* @throws \OCP\Lock\LockedException
|
* @throws \OCP\Lock\LockedException
|
||||||
*/
|
*/
|
||||||
public function acquireLock($path, $type, ILockingProvider $provider) {
|
public function acquireLock($path, $type, ILockingProvider $provider) {
|
||||||
$provider->acquireLock(md5($this->getId() . '::' . $path), $type);
|
$provider->acquireLock('files/' . md5($this->getId() . '::' . trim($path, '/')), $type);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -639,6 +639,6 @@ abstract class Common implements Storage {
|
||||||
* @param \OCP\Lock\ILockingProvider $provider
|
* @param \OCP\Lock\ILockingProvider $provider
|
||||||
*/
|
*/
|
||||||
public function releaseLock($path, $type, ILockingProvider $provider) {
|
public function releaseLock($path, $type, ILockingProvider $provider) {
|
||||||
$provider->releaseLock(md5($this->getId() . '::' . $path), $type);
|
$provider->releaseLock('files/' . md5($this->getId() . '::' . trim($path, '/')), $type);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1621,9 +1621,11 @@ class View {
|
||||||
if (!$path) {
|
if (!$path) {
|
||||||
return [];
|
return [];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$path = trim($path, '/');
|
||||||
$parts = explode('/', $path);
|
$parts = explode('/', $path);
|
||||||
|
|
||||||
// remove the singe file
|
// remove the single file
|
||||||
array_pop($parts);
|
array_pop($parts);
|
||||||
$result = array('/');
|
$result = array('/');
|
||||||
$resultPath = '';
|
$resultPath = '';
|
||||||
|
|
Loading…
Reference in New Issue