dont hold a transaction during the move to trash
because moving to trash can take a long time, keeping a transaction active for the duration can lead to issues Signed-off-by: Robin Appelman <robin@icewind.nl>
This commit is contained in:
parent
615b994816
commit
acef3620e0
|
@ -285,8 +285,6 @@ class Trashbin {
|
||||||
$trashStorage->unlink($trashInternalPath);
|
$trashStorage->unlink($trashInternalPath);
|
||||||
}
|
}
|
||||||
|
|
||||||
$connection = \OC::$server->getDatabaseConnection();
|
|
||||||
$connection->beginTransaction();
|
|
||||||
$trashStorage->getUpdater()->renameFromStorage($sourceStorage, $sourceInternalPath, $trashInternalPath);
|
$trashStorage->getUpdater()->renameFromStorage($sourceStorage, $sourceInternalPath, $trashInternalPath);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
@ -310,12 +308,16 @@ class Trashbin {
|
||||||
} else {
|
} else {
|
||||||
$sourceStorage->unlink($sourceInternalPath);
|
$sourceStorage->unlink($sourceInternalPath);
|
||||||
}
|
}
|
||||||
$connection->rollBack();
|
|
||||||
|
if ($sourceStorage->file_exists($sourceInternalPath)) {
|
||||||
|
// undo the cache move
|
||||||
|
$sourceStorage->getUpdater()->renameFromStorage($trashStorage, $trashInternalPath, $sourceInternalPath);
|
||||||
|
} else {
|
||||||
|
$trashStorage->getUpdater()->remove($trashInternalPath);
|
||||||
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
$connection->commit();
|
|
||||||
|
|
||||||
if ($moveSuccessful) {
|
if ($moveSuccessful) {
|
||||||
$query = \OC_DB::prepare("INSERT INTO `*PREFIX*files_trash` (`id`,`timestamp`,`location`,`user`) VALUES (?,?,?,?)");
|
$query = \OC_DB::prepare("INSERT INTO `*PREFIX*files_trash` (`id`,`timestamp`,`location`,`user`) VALUES (?,?,?,?)");
|
||||||
$result = $query->execute([$filename, $timestamp, $location, $owner]);
|
$result = $query->execute([$filename, $timestamp, $location, $owner]);
|
||||||
|
|
Loading…
Reference in New Issue