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

restore updates from S3 when exists
fix: avoid rearchiving

Henrique Dias 11 лет назад
Родитель
Сommit
04ec45529f

+ 1 - 1
services/track-changes/app/coffee/MongoManager.coffee

@@ -135,7 +135,7 @@ module.exports = MongoManager =
 		db.docs.find project_id: ObjectId(project_id.toString()), {}, callback
 
 	getDocChangesCount: (doc_id, callback)->
-		db.docHistory.count doc_id: ObjectId(doc_id.toString()), {}, callback
+		db.docHistory.count { doc_id : doc_id, inS3 : { $exists : false }}, {}, callback
 
 	getArchivedDocChanges: (doc_id, callback)->
 		db.docHistory.count { doc_id: ObjectId(doc_id.toString()) , inS3: true }, {}, callback

+ 11 - 3
services/track-changes/app/coffee/UpdatesManager.coffee

@@ -95,9 +95,17 @@ module.exports = UpdatesManager =
 	getProjectUpdates: (project_id, options = {}, callback = (error, updates) ->) ->
 		UpdatesManager.processUncompressedUpdatesForProject project_id, (error) ->
 			return callback(error) if error?
-			DocArchiveManager.unArchiveAllDocsChanges project_id, (error) ->
-				return callback(error,null) if error?
-				MongoManager.getProjectUpdates project_id, options, callback
+			MongoManager.getProjectUpdates project_id, options, (error, updates) ->
+				jobs = []
+				for update in updates
+					if update.inS3?
+						do (update) ->
+							jobs.push (callback) -> DocArchiveManager.unArchiveDocChanges update.project_id, update.doc_id, callback
+				if jobs.length?
+					async.series jobs, (err) ->
+						MongoManager.getProjectUpdates project_id, options, callback
+				else
+					callback(error, updates)
 
 	getProjectUpdatesWithUserInfo: (project_id, options = {}, callback = (error, updates) ->) ->
 		UpdatesManager.getProjectUpdates project_id, options, (error, updates) ->