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

+ 3 - 7
services/track-changes/app/coffee/MongoManager.coffee

@@ -48,6 +48,7 @@ module.exports = MongoManager =
 
 
 
 
 	insertCompressedUpdate: (project_id, doc_id, update, temporary, callback = (error) ->) ->
 	insertCompressedUpdate: (project_id, doc_id, update, temporary, callback = (error) ->) ->
+		inS3 = update.inS3?
 		update = {
 		update = {
 			doc_id: ObjectId(doc_id.toString())
 			doc_id: ObjectId(doc_id.toString())
 			project_id: ObjectId(project_id.toString())
 			project_id: ObjectId(project_id.toString())
@@ -55,6 +56,8 @@ module.exports = MongoManager =
 			meta:   update.meta
 			meta:   update.meta
 			v:      update.v
 			v:      update.v
 		}
 		}
+		if inS3
+			update.inS3 = true
 		
 		
 		if temporary
 		if temporary
 			seconds = 1000
 			seconds = 1000
@@ -135,13 +138,6 @@ module.exports = MongoManager =
 	getArchivedDocChanges: (doc_id, callback)->
 	getArchivedDocChanges: (doc_id, callback)->
 		db.docHistory.count { doc_id: ObjectId(doc_id.toString()) , inS3: true }, {}, callback
 		db.docHistory.count { doc_id: ObjectId(doc_id.toString()) , inS3: true }, {}, callback
 
 
-	remarkDocHistoryAsArchived: (doc_id, callback)->
-		logger.log doc_id: doc_id, "remarkDocHistoryAsArchived"
-		MongoManager.getLastCompressedUpdate doc_id, (error, update) ->
-			db.docHistory.update { _id: update._id }, { $set : { inS3 : true } }, (error)->
-				return callback(error) if error?
-				callback(error)
-
 	markDocHistoryAsArchived: (doc_id, update, callback)->
 	markDocHistoryAsArchived: (doc_id, update, callback)->
 		db.docHistory.update { _id: update._id }, { $set : { inS3 : true } }, (error)->
 		db.docHistory.update { _id: update._id }, { $set : { inS3 : true } }, (error)->
 			return callback(error) if error?
 			return callback(error) if error?

+ 5 - 4
services/track-changes/app/coffee/UpdatesManager.coffee

@@ -7,6 +7,7 @@ UpdateTrimmer = require "./UpdateTrimmer"
 logger = require "logger-sharelatex"
 logger = require "logger-sharelatex"
 async = require "async"
 async = require "async"
 DocArchiveManager = require "./DocArchiveManager"
 DocArchiveManager = require "./DocArchiveManager"
+_ = require "underscore"
 
 
 module.exports = UpdatesManager =
 module.exports = UpdatesManager =
 	compressAndSaveRawUpdates: (project_id, doc_id, rawUpdates, temporary, callback = (error) ->) ->
 	compressAndSaveRawUpdates: (project_id, doc_id, rawUpdates, temporary, callback = (error) ->) ->
@@ -33,13 +34,13 @@ module.exports = UpdatesManager =
 					return
 					return
 
 
 			compressedUpdates = UpdateCompressor.compressRawUpdates lastCompressedUpdate, rawUpdates
 			compressedUpdates = UpdateCompressor.compressRawUpdates lastCompressedUpdate, rawUpdates
+			if lastCompressedUpdate?.inS3? and not _.some(compressedUpdates, (update) -> update.inS3)
+				compressedUpdates[compressedUpdates.length-1].inS3 = lastCompressedUpdate.inS3
+
 			MongoManager.insertCompressedUpdates project_id, doc_id, compressedUpdates, temporary,(error) ->
 			MongoManager.insertCompressedUpdates project_id, doc_id, compressedUpdates, temporary,(error) ->
 				return callback(error) if error?
 				return callback(error) if error?
 				logger.log project_id: project_id, doc_id: doc_id, rawUpdatesLength: length, compressedUpdatesLength: compressedUpdates.length, "compressed doc updates"
 				logger.log project_id: project_id, doc_id: doc_id, rawUpdatesLength: length, compressedUpdatesLength: compressedUpdates.length, "compressed doc updates"
-				if lastCompressedUpdate?.inS3?
-					MongoManager.remarkDocHistoryAsArchived doc_id, callback
-				else
-					callback()
+				callback()
 
 
 	REDIS_READ_BATCH_SIZE: 100
 	REDIS_READ_BATCH_SIZE: 100
 	processUncompressedUpdates: (project_id, doc_id, callback = (error) ->) ->
 	processUncompressedUpdates: (project_id, doc_id, callback = (error) ->) ->