From 0935a6f961e7bc34bc59ce17b1e78ad3eedd7dd8 Mon Sep 17 00:00:00 2001
From: srosse <stephane.rosse@frentix.com>
Date: Thu, 29 Aug 2019 19:10:01 +0200
Subject: [PATCH] no-jira: fix concurrent issue in VFS migration

---
 .../services/vfs/manager/VFSRepositoryServiceImpl.java        | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/main/java/org/olat/core/commons/services/vfs/manager/VFSRepositoryServiceImpl.java b/src/main/java/org/olat/core/commons/services/vfs/manager/VFSRepositoryServiceImpl.java
index 7de7e66dda1..9aeaca7b5af 100644
--- a/src/main/java/org/olat/core/commons/services/vfs/manager/VFSRepositoryServiceImpl.java
+++ b/src/main/java/org/olat/core/commons/services/vfs/manager/VFSRepositoryServiceImpl.java
@@ -1087,18 +1087,18 @@ public class VFSRepositoryServiceImpl implements VFSRepositoryService, GenericEv
 				if(directory.isHidden() || VFSRepositoryModule.canMeta(directory) != VFSConstants.YES) {
 					return FileVisitResult.SKIP_SUBTREE;
 				}
-				if(dir.getNameCount() > 50) {
+				if(dir.getNameCount() > 50 || parentLine.size() > 50) {
 					log.error("More than 50 directories deep. Stop migrating metadata: {}", directory);
 					return FileVisitResult.SKIP_SUBTREE;
 				}
 				
 				VFSMetadata parent = parentLine.peekLast();
 				VFSMetadata metadata = migrateMetadata(dir.toFile(), parent);
-				parentLine.add(metadata);
 				if(metadata != null && "migrated".equals(metadata.getMigrated())) {
 					dbInstance.commitAndCloseSession();
 					return FileVisitResult.SKIP_SUBTREE;
 				}
+				parentLine.add(metadata);
 				dbInstance.commit();
 				return FileVisitResult.CONTINUE;
 			}
-- 
GitLab