Merge pull request #5826 from overleaf/bg-use-resync-path

[document-updater] use paths from project structure update in resync

GitOrigin-RevId: 6ed2a48da76553e2fe5d0d3ec8da535515a35110
This commit is contained in:
Brian Gough
2021-11-23 09:03:14 +00:00
committed by Copybot
parent b8ab8fbdbd
commit 9d4ed693f5
4 changed files with 26 additions and 11 deletions
@@ -564,8 +564,8 @@ module.exports = DocumentManager = {
)
},
resyncDocContents(project_id, doc_id, callback) {
logger.debug({ project_id, doc_id }, 'start resyncing doc contents')
resyncDocContents(project_id, doc_id, path, callback) {
logger.debug({ project_id, doc_id, path }, 'start resyncing doc contents')
return RedisManager.getDoc(
project_id,
doc_id,
@@ -573,7 +573,11 @@ module.exports = DocumentManager = {
if (error != null) {
return callback(error)
}
// To avoid issues where the same doc_id appears with different paths,
// we use the path from the resyncProjectStructure update. If we used
// the path from the getDoc call to web then the two occurences of the
// doc_id would map to the same path, and this would be rejected by
// project-history as an unexpected resyncDocContent update.
if (lines == null || version == null) {
logger.debug(
{ project_id, doc_id },
@@ -604,7 +608,7 @@ module.exports = DocumentManager = {
doc_id,
lines,
version,
pathname,
path, // use the path from the resyncProjectStructure update
callback
)
}
@@ -620,7 +624,7 @@ module.exports = DocumentManager = {
doc_id,
lines,
version,
pathname,
path, // use the path from the resyncProjectStructure update
callback
)
}
@@ -768,7 +772,7 @@ module.exports = DocumentManager = {
)
},
resyncDocContentsWithLock(project_id, doc_id, callback) {
resyncDocContentsWithLock(project_id, doc_id, path, callback) {
if (callback == null) {
callback = function () {}
}
@@ -777,6 +781,7 @@ module.exports = DocumentManager = {
DocumentManager.resyncDocContents,
project_id,
doc_id,
path,
callback
)
},
@@ -242,8 +242,14 @@ module.exports = HistoryManager = {
return callback(error)
}
const DocumentManager = require('./DocumentManager')
const resyncDoc = (doc, cb) =>
DocumentManager.resyncDocContentsWithLock(project_id, doc.doc, cb)
const resyncDoc = (doc, cb) => {
DocumentManager.resyncDocContentsWithLock(
project_id,
doc.doc,
doc.path,
cb
)
}
return async.eachLimit(
docs,
HistoryManager.MAX_PARALLEL_REQUESTS,