mirror of
https://github.com/overleaf/overleaf.git
synced 2024-11-21 20:47:08 -05:00
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:
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) {
|
resyncDocContents(project_id, doc_id, path, callback) {
|
||||||
logger.debug({ project_id, doc_id }, 'start resyncing doc contents')
|
logger.debug({ project_id, doc_id, path }, 'start resyncing doc contents')
|
||||||
return RedisManager.getDoc(
|
return RedisManager.getDoc(
|
||||||
project_id,
|
project_id,
|
||||||
doc_id,
|
doc_id,
|
||||||
|
@ -573,7 +573,11 @@ module.exports = DocumentManager = {
|
||||||
if (error != null) {
|
if (error != null) {
|
||||||
return callback(error)
|
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) {
|
if (lines == null || version == null) {
|
||||||
logger.debug(
|
logger.debug(
|
||||||
{ project_id, doc_id },
|
{ project_id, doc_id },
|
||||||
|
@ -604,7 +608,7 @@ module.exports = DocumentManager = {
|
||||||
doc_id,
|
doc_id,
|
||||||
lines,
|
lines,
|
||||||
version,
|
version,
|
||||||
pathname,
|
path, // use the path from the resyncProjectStructure update
|
||||||
callback
|
callback
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
@ -620,7 +624,7 @@ module.exports = DocumentManager = {
|
||||||
doc_id,
|
doc_id,
|
||||||
lines,
|
lines,
|
||||||
version,
|
version,
|
||||||
pathname,
|
path, // use the path from the resyncProjectStructure update
|
||||||
callback
|
callback
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
@ -768,7 +772,7 @@ module.exports = DocumentManager = {
|
||||||
)
|
)
|
||||||
},
|
},
|
||||||
|
|
||||||
resyncDocContentsWithLock(project_id, doc_id, callback) {
|
resyncDocContentsWithLock(project_id, doc_id, path, callback) {
|
||||||
if (callback == null) {
|
if (callback == null) {
|
||||||
callback = function () {}
|
callback = function () {}
|
||||||
}
|
}
|
||||||
|
@ -777,6 +781,7 @@ module.exports = DocumentManager = {
|
||||||
DocumentManager.resyncDocContents,
|
DocumentManager.resyncDocContents,
|
||||||
project_id,
|
project_id,
|
||||||
doc_id,
|
doc_id,
|
||||||
|
path,
|
||||||
callback
|
callback
|
||||||
)
|
)
|
||||||
},
|
},
|
||||||
|
|
|
@ -242,8 +242,14 @@ module.exports = HistoryManager = {
|
||||||
return callback(error)
|
return callback(error)
|
||||||
}
|
}
|
||||||
const DocumentManager = require('./DocumentManager')
|
const DocumentManager = require('./DocumentManager')
|
||||||
const resyncDoc = (doc, cb) =>
|
const resyncDoc = (doc, cb) => {
|
||||||
DocumentManager.resyncDocContentsWithLock(project_id, doc.doc, cb)
|
DocumentManager.resyncDocContentsWithLock(
|
||||||
|
project_id,
|
||||||
|
doc.doc,
|
||||||
|
doc.path,
|
||||||
|
cb
|
||||||
|
)
|
||||||
|
}
|
||||||
return async.eachLimit(
|
return async.eachLimit(
|
||||||
docs,
|
docs,
|
||||||
HistoryManager.MAX_PARALLEL_REQUESTS,
|
HistoryManager.MAX_PARALLEL_REQUESTS,
|
||||||
|
|
|
@ -975,6 +975,7 @@ describe('DocumentManager', function () {
|
||||||
describe('resyncDocContents', function () {
|
describe('resyncDocContents', function () {
|
||||||
describe('when doc is loaded in redis', function () {
|
describe('when doc is loaded in redis', function () {
|
||||||
beforeEach(function () {
|
beforeEach(function () {
|
||||||
|
this.pathnameFromProjectStructureUpdate = '/foo/bar.tex'
|
||||||
this.RedisManager.getDoc = sinon
|
this.RedisManager.getDoc = sinon
|
||||||
.stub()
|
.stub()
|
||||||
.callsArgWith(
|
.callsArgWith(
|
||||||
|
@ -990,6 +991,7 @@ describe('DocumentManager', function () {
|
||||||
this.DocumentManager.resyncDocContents(
|
this.DocumentManager.resyncDocContents(
|
||||||
this.project_id,
|
this.project_id,
|
||||||
this.doc_id,
|
this.doc_id,
|
||||||
|
this.pathnameFromProjectStructureUpdate,
|
||||||
this.callback
|
this.callback
|
||||||
)
|
)
|
||||||
})
|
})
|
||||||
|
@ -1008,7 +1010,7 @@ describe('DocumentManager', function () {
|
||||||
this.doc_id,
|
this.doc_id,
|
||||||
this.lines,
|
this.lines,
|
||||||
this.version,
|
this.version,
|
||||||
this.pathname,
|
this.pathnameFromProjectStructureUpdate,
|
||||||
this.callback
|
this.callback
|
||||||
)
|
)
|
||||||
.should.equal(true)
|
.should.equal(true)
|
||||||
|
@ -1017,6 +1019,7 @@ describe('DocumentManager', function () {
|
||||||
|
|
||||||
describe('when doc is not loaded in redis', function () {
|
describe('when doc is not loaded in redis', function () {
|
||||||
beforeEach(function () {
|
beforeEach(function () {
|
||||||
|
this.pathnameFromProjectStructureUpdate = '/foo/bar.tex'
|
||||||
this.RedisManager.getDoc = sinon.stub().callsArgWith(2, null)
|
this.RedisManager.getDoc = sinon.stub().callsArgWith(2, null)
|
||||||
this.PersistenceManager.getDoc = sinon
|
this.PersistenceManager.getDoc = sinon
|
||||||
.stub()
|
.stub()
|
||||||
|
@ -1032,6 +1035,7 @@ describe('DocumentManager', function () {
|
||||||
this.DocumentManager.resyncDocContents(
|
this.DocumentManager.resyncDocContents(
|
||||||
this.project_id,
|
this.project_id,
|
||||||
this.doc_id,
|
this.doc_id,
|
||||||
|
this.pathnameFromProjectStructureUpdate,
|
||||||
this.callback
|
this.callback
|
||||||
)
|
)
|
||||||
})
|
})
|
||||||
|
@ -1056,7 +1060,7 @@ describe('DocumentManager', function () {
|
||||||
this.doc_id,
|
this.doc_id,
|
||||||
this.lines,
|
this.lines,
|
||||||
this.version,
|
this.version,
|
||||||
this.pathname,
|
this.pathnameFromProjectStructureUpdate,
|
||||||
this.callback
|
this.callback
|
||||||
)
|
)
|
||||||
.should.equal(true)
|
.should.equal(true)
|
||||||
|
|
|
@ -416,7 +416,7 @@ describe('HistoryManager', function () {
|
||||||
|
|
||||||
it('should queue doc content reyncs', function () {
|
it('should queue doc content reyncs', function () {
|
||||||
return this.DocumentManager.resyncDocContentsWithLock
|
return this.DocumentManager.resyncDocContentsWithLock
|
||||||
.calledWith(this.project_id, this.doc_id)
|
.calledWith(this.project_id, this.docs[0].doc, this.docs[0].path)
|
||||||
.should.equal(true)
|
.should.equal(true)
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue