diff --git a/src/main/java/org/olat/core/util/vfs/version/VersionsFileManager.java b/src/main/java/org/olat/core/util/vfs/version/VersionsFileManager.java index 303733f3761a8a584f253d7de74aed7f8466239a..f8bb56bc0303b5cda5f80d358cdd3027ea0b9378 100644 --- a/src/main/java/org/olat/core/util/vfs/version/VersionsFileManager.java +++ b/src/main/java/org/olat/core/util/vfs/version/VersionsFileManager.java @@ -214,7 +214,15 @@ public class VersionsFileManager extends VersionsManager implements Initializabl return versions; } catch (Exception e) { log.warn("This file is not a versions XML file: " + fVersions, e); - return null; + fVersions.delete(); + VersionsFileImpl versions = new VersionsFileImpl(); + versions.setCurrentVersion((Versionable) leaf); + versions.setVersioned(isVersioned(leaf)); + versions.setRevisionNr(getNextRevisionNr(versions)); + log.warn("Deleted corrupt version XML file and created new version XML file: " + versions); + // the old revisions can not be restored automatically. They are still on disk, you could recover them + // manually. This is not a perfect solution, but at least the user does not get an RS + return versions; } }