Skip to content

Commit 0b01103

Browse files
authored
Merge pull request #28438 from csware/issue-1649
2 parents 1acfbd0 + 1c736ab commit 0b01103

File tree

1 file changed

+14
-3
lines changed

1 file changed

+14
-3
lines changed

apps/files_trashbin/lib/Trashbin.php

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -968,9 +968,20 @@ private static function getVersionsFromTrash($filename, $timestamp, $user) {
968968
[$storage,] = $view->resolvePath('/');
969969

970970
//force rescan of versions, local storage may not have updated the cache
971-
if (!self::$scannedVersions) {
972-
$storage->getScanner()->scan('files_trashbin/versions');
973-
self::$scannedVersions = true;
971+
$waitstart = time();
972+
while (!self::$scannedVersions) {
973+
try {
974+
$storage->getScanner()->scan('files_trashbin/versions');
975+
self::$scannedVersions = true;
976+
} catch (LockedException $e) {
977+
/* a concurrent remove/restore from trash occurred,
978+
* retry with a maximum wait time of approx. 15 seconds
979+
*/
980+
if (time() - $waitstart > 15) {
981+
throw $e;
982+
}
983+
usleep(50000 + rand(0, 10000));
984+
}
974985
}
975986

976987
$pattern = \OC::$server->getDatabaseConnection()->escapeLikeParameter(basename($filename));

0 commit comments

Comments
 (0)