Skip to content

Commit 9ca377d

Browse files
committed
fix(files_versions): Do not assume source exist when migrating versions to new storage
Signed-off-by: Louis Chmn <louis@chmn.me>
1 parent 99d6276 commit 9ca377d

File tree

1 file changed

+17
-1
lines changed

1 file changed

+17
-1
lines changed

apps/files_versions/lib/Listener/VersionStorageMoveListener.php

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
use OCP\Files\Storage\IStorage;
2828
use OCP\IUser;
2929
use OCP\IUserSession;
30+
use Psr\Log\LoggerInterface;
3031

3132
/** @template-implements IEventListener<Event> */
3233
class VersionStorageMoveListener implements IEventListener {
@@ -36,6 +37,7 @@ class VersionStorageMoveListener implements IEventListener {
3637
public function __construct(
3738
private IVersionManager $versionManager,
3839
private IUserSession $userSession,
40+
private LoggerInterface $logger,
3941
) {
4042
}
4143

@@ -98,7 +100,21 @@ private function recursivelyHandleMoveOrCopy(Event $event, IUser $user, ?Node $s
98100
$source = $this->movedNodes[$target->getId()];
99101
}
100102

101-
/** @var File $source */
103+
if ($source === null) {
104+
$this->logger->warning(
105+
'Failed to retrieve source file during version move/copy.',
106+
[
107+
'eventClass' => get_class($event),
108+
'targetPath' => $target->getPath(),
109+
'targetId' => $target->getId(),
110+
'movedNodesKeys' => array_keys($this->movedNodes),
111+
'sourceBackendClass' => get_class($sourceBackend),
112+
'targetBackendClass' => get_class($targetBackend),
113+
]
114+
);
115+
return;
116+
}
117+
102118
$this->handleMoveOrCopy($event, $user, $source, $target, $sourceBackend, $targetBackend);
103119
} elseif ($target instanceof Folder) {
104120
/** @var Folder $source */

0 commit comments

Comments
 (0)