Merge pull request #28431 from overleaf/em-docupdater-get-ranges

Look in docupdater when obtaining comments for DSMP

GitOrigin-RevId: acaead280f725da8e0c438d5b429fa983c3cad86
This commit is contained in:
Eric Mc Sween
2025-09-15 08:05:29 +00:00
committed by Copybot
parent d8c200b3f5
commit e44f137090
6 changed files with 55 additions and 0 deletions
+2
View File
@@ -140,6 +140,8 @@ app.get(
HttpController.getComment
)
app.get('/project/:project_id/doc/:doc_id/peek', HttpController.peekDoc)
app.get('/project/:project_id/ranges', HttpController.getProjectRanges)
// temporarily keep the GET method for backwards compatibility
app.get('/project/:project_id/doc', HttpController.getProjectDocsAndFlushIfOld)
// will migrate to the POST method of get_and_flush_if_old instead
@@ -181,6 +181,12 @@ async function getProjectLastUpdatedAt(req, res) {
res.json({ lastUpdatedAt: timestamps.pop() })
}
async function getProjectRanges(req, res) {
const projectId = req.params.project_id
const docs = await ProjectManager.promises.getProjectRanges(projectId)
res.json({ docs })
}
async function clearProjectState(req, res) {
const projectId = req.params.project_id
const timer = new Metrics.Timer('http.clearProjectState')
@@ -537,6 +543,7 @@ module.exports = {
peekDoc: expressify(peekDoc),
getProjectDocsAndFlushIfOld: expressify(getProjectDocsAndFlushIfOld),
getProjectLastUpdatedAt: expressify(getProjectLastUpdatedAt),
getProjectRanges: expressify(getProjectRanges),
clearProjectState: expressify(clearProjectState),
appendToDoc: expressify(appendToDoc),
setDoc: expressify(setDoc),
@@ -118,6 +118,16 @@ async function getProjectDocsAndFlushIfOld(
return docs
}
async function getProjectRanges(projectId) {
const docIds = await RedisManager.promises.getDocIdsInProject(projectId)
const docs = []
for (const docId of docIds) {
const ranges = await RedisManager.promises.getDocRanges(docId)
docs.push({ id: docId, ranges })
}
return docs
}
async function clearProjectState(projectId) {
await RedisManager.promises.clearProjectState(projectId)
}
@@ -234,6 +244,7 @@ const ProjectManager = {
queueFlushAndDeleteProject,
getProjectDocsTimestamps,
getProjectDocsAndFlushIfOld,
getProjectRanges,
clearProjectState,
updateProjectWithLocks,
}
@@ -296,6 +296,12 @@ const RedisManager = {
}
},
async getDocRanges(docId) {
const json = await rclient.get(keys.ranges({ doc_id: docId }))
const ranges = RedisManager._deserializeRanges(json)
return ranges
},
async getDocVersion(docId) {
const result = await rclient.mget(keys.docVersion({ doc_id: docId }))
let [version] = result || []