From 33904fe7bea9229f9112ede834e95d822da85a34 Mon Sep 17 00:00:00 2001
From: James Allen <james@sharelatex.com>
Date: Tue, 13 Mar 2018 13:21:48 +0000
Subject: [PATCH 1/2] Add files to project in series to avoid lock contention

---
 .../app/coffee/Features/Uploads/FileSystemImportManager.coffee  | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/services/web/app/coffee/Features/Uploads/FileSystemImportManager.coffee b/services/web/app/coffee/Features/Uploads/FileSystemImportManager.coffee
index 6ab23b2d5a..6f64c11a18 100644
--- a/services/web/app/coffee/Features/Uploads/FileSystemImportManager.coffee
+++ b/services/web/app/coffee/Features/Uploads/FileSystemImportManager.coffee
@@ -57,7 +57,7 @@ module.exports = FileSystemImportManager =
 								FileSystemImportManager.addEntity user_id, project_id, parent_folder_id, entry, "#{folderPath}/#{entry}", replace, callback
 							else
 								callback()
-				async.parallelLimit jobs, 5, callback
+				async.series jobs, callback
 
 	addEntity: (user_id, project_id, folder_id, name, path, replace, callback = (error, entity)-> ) ->
 		FileSystemImportManager._isSafeOnFileSystem path, (err, isSafe)->

From d9b301023acd58a0fdc068676758264f725ae22d Mon Sep 17 00:00:00 2001
From: James Allen <james@sharelatex.com>
Date: Tue, 13 Mar 2018 13:30:06 +0000
Subject: [PATCH 2/2] Use eachSeries rather than a job array

---
 .../Features/Uploads/FileSystemImportManager.coffee       | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/services/web/app/coffee/Features/Uploads/FileSystemImportManager.coffee b/services/web/app/coffee/Features/Uploads/FileSystemImportManager.coffee
index 6f64c11a18..856408cc64 100644
--- a/services/web/app/coffee/Features/Uploads/FileSystemImportManager.coffee
+++ b/services/web/app/coffee/Features/Uploads/FileSystemImportManager.coffee
@@ -49,15 +49,17 @@ module.exports = FileSystemImportManager =
 				return callback("path is symlink")
 			fs.readdir folderPath, (error, entries = []) =>
 				return callback(error) if error?
-				jobs = _.map entries, (entry) =>
-					(callback) =>
+				async.eachSeries(
+					entries,
+					(entry, callback) =>
 						FileTypeManager.shouldIgnore entry, (error, ignore) =>
 							return callback(error) if error?
 							if !ignore
 								FileSystemImportManager.addEntity user_id, project_id, parent_folder_id, entry, "#{folderPath}/#{entry}", replace, callback
 							else
 								callback()
-				async.series jobs, callback
+					callback
+				)
 
 	addEntity: (user_id, project_id, folder_id, name, path, replace, callback = (error, entity)-> ) ->
 		FileSystemImportManager._isSafeOnFileSystem path, (err, isSafe)->