diff options
author | Julius Härtl <jus@bitgrid.net> | 2023-06-13 22:10:13 +0200 |
---|---|---|
committer | Louis <6653109+artonge@users.noreply.github.com> | 2023-06-26 17:57:38 +0200 |
commit | ea30d1165be3542070a3130b09c6cc8b657386e7 (patch) | |
tree | 9c13c99ac6f09694f263a132048a96db5bf102e8 | |
parent | 3190dfb5ae3a0f2966ba1229a54a5cad79226e4e (diff) | |
download | nextcloud-server-ea30d1165be3542070a3130b09c6cc8b657386e7.tar.gz nextcloud-server-ea30d1165be3542070a3130b09c6cc8b657386e7.zip |
fix: Avoid failing to update the current version entry if there is none
Signed-off-by: Julius Härtl <jus@bitgrid.net>
-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()]); |