diff options
author | Julius Härtl <jus@bitgrid.net> | 2023-06-13 22:10:13 +0200 |
---|---|---|
committer | Arthur Schiwon <blizzz@arthur-schiwon.de> | 2023-07-12 19:55:30 +0200 |
commit | e045faa6a76850940a93459dbc4b6e016ada8629 (patch) | |
tree | b0c4bc7d64f571d92bdfc4746f18e309de1716a4 /apps/files_versions | |
parent | c015089d4651aa468c2991711a8f29c4d9f37933 (diff) | |
download | nextcloud-server-e045faa6a76850940a93459dbc4b6e016ada8629.tar.gz nextcloud-server-e045faa6a76850940a93459dbc4b6e016ada8629.zip |
fix: Avoid failing to update the current version entry if there is none
Signed-off-by: Julius Härtl <jus@bitgrid.net>
Diffstat (limited to 'apps/files_versions')
-rw-r--r-- | apps/files_versions/lib/Listener/FileEventsListener.php | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/apps/files_versions/lib/Listener/FileEventsListener.php b/apps/files_versions/lib/Listener/FileEventsListener.php index 76590733e26..082c88295cb 100644 --- a/apps/files_versions/lib/Listener/FileEventsListener.php +++ b/apps/files_versions/lib/Listener/FileEventsListener.php @@ -239,11 +239,18 @@ class FileEventsListener implements IEventListener { } else { // If no new version was stored in the FS, no new version should be added in the DB. // So we simply update the associated version. - $currentVersionEntity = $this->versionsMapper->findVersionForFileId($node->getId(), $writeHookInfo['previousNode']->getMtime()); - $currentVersionEntity->setTimestamp($node->getMTime()); - $currentVersionEntity->setSize($node->getSize()); - $currentVersionEntity->setMimetype($this->mimeTypeLoader->getId($node->getMimetype())); - $this->versionsMapper->update($currentVersionEntity); + try { + $currentVersionEntity = $this->versionsMapper->findVersionForFileId($node->getId(), $writeHookInfo['previousNode']->getMtime()); + $currentVersionEntity->setTimestamp($node->getMTime()); + $currentVersionEntity->setSize($node->getSize()); + $currentVersionEntity->setMimetype($this->mimeTypeLoader->getId($node->getMimetype())); + $this->versionsMapper->update($currentVersionEntity); + } catch (DoesNotExistException) { + // There might be cases where the current version entry doesn't exist, + // e.g. if none was written due to an empty file or from before the versions table was introduced + // We just create the initial version entry then for the current entity + $this->created($node); + } } unset($this->writeHookInfo[$node->getId()]); |