|
|
|
@ -968,9 +968,20 @@ class Trashbin {
|
|
|
|
|
[$storage,] = $view->resolvePath('/');
|
|
|
|
|
|
|
|
|
|
//force rescan of versions, local storage may not have updated the cache
|
|
|
|
|
if (!self::$scannedVersions) {
|
|
|
|
|
$storage->getScanner()->scan('files_trashbin/versions');
|
|
|
|
|
self::$scannedVersions = true;
|
|
|
|
|
$waitstart = time();
|
|
|
|
|
while (!self::$scannedVersions) {
|
|
|
|
|
try {
|
|
|
|
|
$storage->getScanner()->scan('files_trashbin/versions');
|
|
|
|
|
self::$scannedVersions = true;
|
|
|
|
|
} catch (LockedException $e) {
|
|
|
|
|
/* a concurrent remove/restore from trash occurred,
|
|
|
|
|
* retry with a maximum wait time of approx. 15 seconds
|
|
|
|
|
*/
|
|
|
|
|
if (time() - $waitstart > 15) {
|
|
|
|
|
throw $e;
|
|
|
|
|
}
|
|
|
|
|
usleep(50000 + rand(0, 10000));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$pattern = \OC::$server->getDatabaseConnection()->escapeLikeParameter(basename($filename));
|
|
|
|
|