New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Broken version preview in sidebar due to empty file #39791
Comments
Actually database content seems reasonable:
|
Ok, seems to be just the preview as the file also downloads fine, 1 byte due to the newline |
Root cause fix is in #39786 but there is no cleanup yet of existing broken version references |
Finding orphaned db entries is quite tricky as we'd need to iterate over all entries to then
One option could be to clean up on the fly when getting the versions, but a onetime cleanup would be preferred imo. Non-tested patch for deleting orphaned db entry versions on the fly if they have no corresponding version file on the fs: diff --git a/apps/files_versions/lib/Versions/LegacyVersionsBackend.php b/apps/files_versions/lib/Versions/LegacyVersionsBackend.php
index a9ea09247c2..f41e17f0adc 100644
--- a/apps/files_versions/lib/Versions/LegacyVersionsBackend.php
+++ b/apps/files_versions/lib/Versions/LegacyVersionsBackend.php
@@ -99,6 +99,8 @@ class LegacyVersionsBackend implements IVersionBackend, INameableVersionBackend,
$versions = $this->getVersionsForFileFromDB($file, $user);
+
+
if (count($versions) > 0) {
return $versions;
}
@@ -138,6 +140,14 @@ class LegacyVersionsBackend implements IVersionBackend, INameableVersionBackend,
private function getVersionsForFileFromDB(FileInfo $file, IUser $user): array {
$userFolder = $this->rootFolder->getUserFolder($user->getUID());
+ $versions = $this->versionsMapper->findAllVersionsForFileId($file->getId());
+ $relativePath = $userFolder->getRelativePath($file->getPath());
+ $versionsFS = array_map(fn($version) => $version['version'], Storage::getVersions($user->getUID(), $relativePath));
+ $orphanedVersions = array_filter($versions, fn($version) => !in_array($version->getTimestamp(), $versionsFS));
+ foreach ($orphanedVersions as $version) {
+ $this->versionsMapper->delete($version);
+ }
+
return array_map(
fn (VersionEntity $versionEntity) => new Version(
$versionEntity->getTimestamp(),
@@ -151,7 +161,7 @@ class LegacyVersionsBackend implements IVersionBackend, INameableVersionBackend,
$user,
$versionEntity->getLabel(),
),
- $this->versionsMapper->findAllVersionsForFileId($file->getId())
+ $versions
);
} |
When starting with an empty file there seems to be a scenario when there is a broken file version listed in the sidebar:
The text was updated successfully, but these errors were encountered: