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
3759bef671
commit
f6bf519e55
|
@ -284,8 +284,6 @@ class Trashbin {
|
|||
$trashStorage->unlink($trashInternalPath);
|
||||
}
|
||||
|
||||
$connection = \OC::$server->getDatabaseConnection();
|
||||
$connection->beginTransaction();
|
||||
$trashStorage->getUpdater()->renameFromStorage($sourceStorage, $sourceInternalPath, $trashInternalPath);
|
||||
|
||||
try {
|
||||
|
@ -309,12 +307,16 @@ class Trashbin {
|
|||
} else {
|
||||
$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;
|
||||
}
|
||||
|
||||
$connection->commit();
|
||||
|
||||
if ($moveSuccessful) {
|
||||
$query = \OC_DB::prepare("INSERT INTO `*PREFIX*files_trash` (`id`,`timestamp`,`location`,`user`) VALUES (?,?,?,?)");
|
||||
$result = $query->execute([$filename, $timestamp, $location, $owner]);
|
||||
|
|
Loading…
Reference in New Issue