From 331a4dbe743ff305491ee815b3d070991c1fcae5 Mon Sep 17 00:00:00 2001
From: gnaegi <none@none>
Date: Tue, 17 Mar 2015 09:15:33 +0100
Subject: [PATCH] OO-1481 replace corrupt versions.xml file with new one to
 prevent RS

---
 .../core/util/vfs/version/VersionsFileManager.java     | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)

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 303733f3761..f8bb56bc030 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;
 		}
 	}
 
-- 
GitLab