From cc82e935ded79e6c05f6ff074d32e8734d04521d Mon Sep 17 00:00:00 2001
From: srosse <stephane.rosse@frentix.com>
Date: Tue, 28 May 2019 09:03:41 +0200
Subject: [PATCH] OO-3934: limit depth for migration, longer length for urls
 field

---
 .../services/vfs/manager/VFSRepositoryServiceImpl.java      | 6 ++++++
 .../resources/database/mysql/alter_13_2_x_to_13_3_0.sql     | 4 ++--
 src/main/resources/database/mysql/setupDatabase.sql         | 4 ++--
 .../resources/database/oracle/alter_13_2_x_to_13_3_0.sql    | 4 ++--
 src/main/resources/database/oracle/setupDatabase.sql        | 4 ++--
 .../database/postgresql/alter_13_2_x_to_13_3_0.sql          | 4 ++--
 src/main/resources/database/postgresql/setupDatabase.sql    | 4 ++--
 7 files changed, 18 insertions(+), 12 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 68a4b083ca7..f2b7c4bb02a 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
@@ -1077,6 +1077,11 @@ public class VFSRepositoryServiceImpl implements VFSRepositoryService, GenericEv
 				if(directory.isHidden() || VFSRepositoryModule.canMeta(directory) != VFSConstants.YES) {
 					return FileVisitResult.SKIP_SUBTREE;
 				}
+				if(dir.getNameCount() > 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);
@@ -1084,6 +1089,7 @@ public class VFSRepositoryServiceImpl implements VFSRepositoryService, GenericEv
 					dbInstance.commitAndCloseSession();
 					return FileVisitResult.SKIP_SUBTREE;
 				}
+				dbInstance.commit();
 				return FileVisitResult.CONTINUE;
 			}
 
diff --git a/src/main/resources/database/mysql/alter_13_2_x_to_13_3_0.sql b/src/main/resources/database/mysql/alter_13_2_x_to_13_3_0.sql
index a73f66da947..981cacfa985 100644
--- a/src/main/resources/database/mysql/alter_13_2_x_to_13_3_0.sql
+++ b/src/main/resources/database/mysql/alter_13_2_x_to_13_3_0.sql
@@ -22,7 +22,7 @@ create table o_vfs_metadata (
    f_city varchar(256),
    f_pages varchar(16),
    f_language varchar(16),
-   f_url text(4000),
+   f_url text(2000),
    f_pub_month varchar(16),
    f_pub_year varchar(16),
    f_license_type_name varchar(256),
@@ -91,7 +91,7 @@ create table o_vfs_revision (
    f_city varchar(256),
    f_pages varchar(16),
    f_language varchar(16),
-   f_url text(1024),
+   f_url text(2048),
    f_pub_month varchar(16),
    f_pub_year varchar(16),
    f_license_type_name varchar(256),
diff --git a/src/main/resources/database/mysql/setupDatabase.sql b/src/main/resources/database/mysql/setupDatabase.sql
index 17a0aaadf33..5b8049b64ff 100644
--- a/src/main/resources/database/mysql/setupDatabase.sql
+++ b/src/main/resources/database/mysql/setupDatabase.sql
@@ -1732,7 +1732,7 @@ create table o_vfs_metadata (
    f_city varchar(256),
    f_pages varchar(16),
    f_language varchar(16),
-   f_url text(1024),
+   f_url text(2000),
    f_pub_month varchar(16),
    f_pub_year varchar(16),
    f_license_type_name varchar(256),
@@ -1783,7 +1783,7 @@ create table o_vfs_revision (
    f_city varchar(256),
    f_pages varchar(16),
    f_language varchar(16),
-   f_url text(1024),
+   f_url text(2048),
    f_pub_month varchar(16),
    f_pub_year varchar(16),
    f_license_type_name varchar(256),
diff --git a/src/main/resources/database/oracle/alter_13_2_x_to_13_3_0.sql b/src/main/resources/database/oracle/alter_13_2_x_to_13_3_0.sql
index 9ad8fef8984..143a62b3c33 100644
--- a/src/main/resources/database/oracle/alter_13_2_x_to_13_3_0.sql
+++ b/src/main/resources/database/oracle/alter_13_2_x_to_13_3_0.sql
@@ -21,7 +21,7 @@ create table o_vfs_metadata (
    f_city varchar(256),
    f_pages varchar(2000),
    f_language varchar(16),
-   f_url varchar(1024),
+   f_url varchar(2000),
    f_pub_month varchar(16),
    f_pub_year varchar(16),
    f_license_type_name varchar(256),
@@ -91,7 +91,7 @@ create table o_vfs_revision (
    f_city varchar(256),
    f_pages varchar(2000),
    f_language varchar(16),
-   f_url varchar(1024),
+   f_url varchar(2048),
    f_pub_month varchar(16),
    f_pub_year varchar(16),
    f_license_type_name varchar(256),
diff --git a/src/main/resources/database/oracle/setupDatabase.sql b/src/main/resources/database/oracle/setupDatabase.sql
index 39822040f87..b5ecbd9f754 100644
--- a/src/main/resources/database/oracle/setupDatabase.sql
+++ b/src/main/resources/database/oracle/setupDatabase.sql
@@ -1660,7 +1660,7 @@ create table o_vfs_metadata (
    f_city varchar(256),
    f_pages varchar(2000),
    f_language varchar(16),
-   f_url varchar(1024),
+   f_url varchar(2000),
    f_pub_month varchar(16),
    f_pub_year varchar(16),
    f_license_type_name varchar(256),
@@ -1709,7 +1709,7 @@ create table o_vfs_revision (
    f_city varchar(256),
    f_pages varchar(2000),
    f_language varchar(16),
-   f_url varchar(1024),
+   f_url varchar(2048),
    f_pub_month varchar(16),
    f_pub_year varchar(16),
    f_license_type_name varchar(256),
diff --git a/src/main/resources/database/postgresql/alter_13_2_x_to_13_3_0.sql b/src/main/resources/database/postgresql/alter_13_2_x_to_13_3_0.sql
index d1f2eaf6f38..9af68940ef9 100644
--- a/src/main/resources/database/postgresql/alter_13_2_x_to_13_3_0.sql
+++ b/src/main/resources/database/postgresql/alter_13_2_x_to_13_3_0.sql
@@ -22,7 +22,7 @@ create table o_vfs_metadata (
    f_city varchar(256),
    f_pages varchar(2000),
    f_language varchar(16),
-   f_url varchar(1024),
+   f_url varchar(2000),
    f_pub_month varchar(16),
    f_pub_year varchar(16),
    f_license_type_name varchar(256),
@@ -91,7 +91,7 @@ create table o_vfs_revision (
    f_city varchar(256),
    f_pages varchar(2000),
    f_language varchar(16),
-   f_url varchar(1024),
+   f_url varchar(2048),
    f_pub_month varchar(16),
    f_pub_year varchar(16),
    f_license_type_name varchar(256),
diff --git a/src/main/resources/database/postgresql/setupDatabase.sql b/src/main/resources/database/postgresql/setupDatabase.sql
index dff4ee28b11..3aa82040360 100644
--- a/src/main/resources/database/postgresql/setupDatabase.sql
+++ b/src/main/resources/database/postgresql/setupDatabase.sql
@@ -1625,7 +1625,7 @@ create table o_vfs_metadata (
    f_city varchar(256),
    f_pages varchar(2000),
    f_language varchar(16),
-   f_url varchar(1024),
+   f_url varchar(2000),
    f_pub_month varchar(16),
    f_pub_year varchar(16),
    f_license_type_name varchar(256),
@@ -1676,7 +1676,7 @@ create table o_vfs_revision (
    f_city varchar(256),
    f_pages varchar(2000),
    f_language varchar(16),
-   f_url varchar(1024),
+   f_url varchar(2048),
    f_pub_month varchar(16),
    f_pub_year varchar(16),
    f_license_type_name varchar(256),
-- 
GitLab