diff options
author | Robin Appelman <robin@icewind.nl> | 2020-06-30 16:09:50 +0200 |
---|---|---|
committer | Robin Appelman <robin@icewind.nl> | 2020-07-23 15:24:48 +0200 |
commit | fcad692b4a5dd8e0c128af64647b64f658b124c5 (patch) | |
tree | 5e76cad58489d46f046f61f967bd7bff512e5140 | |
parent | 59498493220a666573516679e7752d09543ac1b5 (diff) | |
download | nextcloud-server-fcad692b4a5dd8e0c128af64647b64f658b124c5.tar.gz nextcloud-server-fcad692b4a5dd8e0c128af64647b64f658b124c5.zip |
rollback cache rename if trashbin move fails
Signed-off-by: Robin Appelman <robin@icewind.nl>
-rw-r--r-- | apps/files_trashbin/lib/Trashbin.php | 5 | ||||
-rw-r--r-- | tests/lib/Files/ViewTest.php | 9 |
2 files changed, 7 insertions, 7 deletions
diff --git a/apps/files_trashbin/lib/Trashbin.php b/apps/files_trashbin/lib/Trashbin.php index e23368f825b..db00a7ed272 100644 --- a/apps/files_trashbin/lib/Trashbin.php +++ b/apps/files_trashbin/lib/Trashbin.php @@ -278,6 +278,8 @@ class Trashbin { /** @var \OC\Files\Storage\Storage $sourceStorage */ [$sourceStorage, $sourceInternalPath] = $ownerView->resolvePath('/files/' . $ownerPath); + $connection = \OC::$server->getDatabaseConnection(); + $connection->beginTransaction(); $trashStorage->getUpdater()->renameFromStorage($sourceStorage, $sourceInternalPath, $trashInternalPath); try { @@ -300,9 +302,12 @@ class Trashbin { } else { $sourceStorage->unlink($sourceInternalPath); } + $connection->rollBack(); 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]); diff --git a/tests/lib/Files/ViewTest.php b/tests/lib/Files/ViewTest.php index 036fc038a60..ae6c4b22dec 100644 --- a/tests/lib/Files/ViewTest.php +++ b/tests/lib/Files/ViewTest.php @@ -1167,13 +1167,8 @@ class ViewTest extends \Test\TestCase { ->setMethods(['fopen']) ->getMock(); - $storage2->expects($this->any()) - ->method('fopen') - ->willReturnCallback(function ($path, $mode) use ($storage2) { - /** @var \PHPUnit_Framework_MockObject_MockObject | \OC\Files\Storage\Temporary $storage2 */ - $source = fopen($storage2->getSourcePath($path), $mode); - return Quota::wrap($source, 9); - }); + $storage2->method('writeStream') + ->willReturn(0); $storage1->mkdir('sub'); $storage1->file_put_contents('foo.txt', '0123456789ABCDEFGH'); |