Просмотр исходного кода

add comment about upsert and locking

Brian Gough 8 лет назад
Родитель
Сommit
cdfa2de68d

+ 5 - 0
services/web/app/coffee/Features/Project/ProjectEntityUpdateHandler.coffee

@@ -261,6 +261,11 @@ module.exports = ProjectEntityUpdateHandler = self =
 					return callback(err) if err?
 					callback null, doc, !existingDoc?
 
+	# FIXME: this method needs to be changed, currently it needs a lock around an upload to S3 because
+	# there is no way to know in advance if the file is a replace or an insert (at least you have to 
+	# take the lock to find that out and do any operation in that lock).  In the new scheme any upsert
+	# should always create the new file (outside the lock) in S3 first and then make the changes to the 
+	# project in a lock, marking the old file as deleted if it exists.
 	upsertFile: wrapWithLock (project_id, folder_id, fileName, fsPath, linkedFileData, userId, callback = (err, file, isNewFile)->)->
 		ProjectLocator.findElement project_id: project_id, element_id: folder_id, type: "folder", (error, folder) ->
 			return callback(error) if error?