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 7de7e66dda138ca0599d7b6349b0ab5a33c90909..9aeaca7b5af7e901c49b9de940c357f95fe9053d 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; }