fix(files_versions): Do not assume source exist when migrating versions to new storage

Signed-off-by: Louis Chmn <louis@chmn.me>
This commit is contained in:
Louis Chmn 2025-10-31 15:47:43 +01:00 committed by backportbot[bot]
parent cdda18efaa
commit 824be1fe3c

View file

@ -27,6 +27,7 @@ use OCP\Files\Node;
use OCP\Files\Storage\IStorage;
use OCP\IUser;
use OCP\IUserSession;
use Psr\Log\LoggerInterface;
/** @template-implements IEventListener<Event> */
class VersionStorageMoveListener implements IEventListener {
@ -36,6 +37,7 @@ class VersionStorageMoveListener implements IEventListener {
public function __construct(
private IVersionManager $versionManager,
private IUserSession $userSession,
private LoggerInterface $logger,
) {
}
@ -98,7 +100,21 @@ class VersionStorageMoveListener implements IEventListener {
$source = $this->movedNodes[$target->getId()];
}
/** @var File $source */
if ($source === null) {
$this->logger->warning(
'Failed to retrieve source file during version move/copy.',
[
'eventClass' => get_class($event),
'targetPath' => $target->getPath(),
'targetId' => $target->getId(),
'movedNodesKeys' => array_keys($this->movedNodes),
'sourceBackendClass' => get_class($sourceBackend),
'targetBackendClass' => get_class($targetBackend),
]
);
return;
}
$this->handleMoveOrCopy($event, $user, $source, $target, $sourceBackend, $targetBackend);
} elseif ($target instanceof Folder) {
/** @var Folder $source */