mirror of
https://github.com/yu-i-i/overleaf-cep.git
synced 2026-05-23 17:19:37 +02:00
[document-updater] remove_deleted_docs: add option to run on single doc (#31595)
* [document-updater] remove_deleted_docs: use promisified RedisManager * [document-updater] remove_deleted_docs: log all getDoc details * [document-updater] remove_deleted_docs: add option to run on single doc GitOrigin-RevId: e2b73defd1d99d14578ce573d0e05c31073ab739
This commit is contained in:
@@ -7,11 +7,6 @@ const keys = Settings.redis.documentupdater.key_schema
|
|||||||
const ProjectFlusher = require('../app/js/ProjectFlusher')
|
const ProjectFlusher = require('../app/js/ProjectFlusher')
|
||||||
const RedisManager = require('../app/js/RedisManager')
|
const RedisManager = require('../app/js/RedisManager')
|
||||||
const { mongoClient, db, ObjectId } = require('../app/js/mongodb')
|
const { mongoClient, db, ObjectId } = require('../app/js/mongodb')
|
||||||
const util = require('node:util')
|
|
||||||
const getDoc = util.promisify((projectId, docId, cb) =>
|
|
||||||
RedisManager.getDoc(projectId, docId, (err, ...args) => cb(err, args))
|
|
||||||
)
|
|
||||||
const removeDocFromMemory = util.promisify(RedisManager.removeDocFromMemory)
|
|
||||||
|
|
||||||
const summary = { totalDocs: 0, deletedDocs: 0, skippedDocs: 0 }
|
const summary = { totalDocs: 0, deletedDocs: 0, skippedDocs: 0 }
|
||||||
|
|
||||||
@@ -33,8 +28,8 @@ async function removeDeletedDocs(dockeys, options) {
|
|||||||
async function removeDeletedDoc(docId, options) {
|
async function removeDeletedDoc(docId, options) {
|
||||||
const projectId = await rclient.get(keys.projectKey({ doc_id: docId }))
|
const projectId = await rclient.get(keys.projectKey({ doc_id: docId }))
|
||||||
|
|
||||||
const [
|
const {
|
||||||
docLines,
|
lines: docLines,
|
||||||
version,
|
version,
|
||||||
ranges,
|
ranges,
|
||||||
pathname,
|
pathname,
|
||||||
@@ -42,7 +37,9 @@ async function removeDeletedDoc(docId, options) {
|
|||||||
unflushedTime,
|
unflushedTime,
|
||||||
lastUpdatedAt,
|
lastUpdatedAt,
|
||||||
lastUpdatedBy,
|
lastUpdatedBy,
|
||||||
] = await getDoc(projectId, docId)
|
historyRangesSupport,
|
||||||
|
resolvedCommentIds,
|
||||||
|
} = await RedisManager.promises.getDoc(projectId, docId)
|
||||||
|
|
||||||
const project = await db.projects.findOne({ _id: new ObjectId(projectId) })
|
const project = await db.projects.findOne({ _id: new ObjectId(projectId) })
|
||||||
|
|
||||||
@@ -64,6 +61,8 @@ async function removeDeletedDoc(docId, options) {
|
|||||||
unflushedTime,
|
unflushedTime,
|
||||||
lastUpdatedAt,
|
lastUpdatedAt,
|
||||||
lastUpdatedBy,
|
lastUpdatedBy,
|
||||||
|
historyRangesSupport,
|
||||||
|
resolvedCommentIds,
|
||||||
},
|
},
|
||||||
'refusing to delete doc, project contains docId'
|
'refusing to delete doc, project contains docId'
|
||||||
)
|
)
|
||||||
@@ -82,6 +81,8 @@ async function removeDeletedDoc(docId, options) {
|
|||||||
unflushedTime,
|
unflushedTime,
|
||||||
lastUpdatedAt,
|
lastUpdatedAt,
|
||||||
lastUpdatedBy,
|
lastUpdatedBy,
|
||||||
|
historyRangesSupport,
|
||||||
|
resolvedCommentIds,
|
||||||
},
|
},
|
||||||
'refusing to delete doc, project still exists'
|
'refusing to delete doc, project still exists'
|
||||||
)
|
)
|
||||||
@@ -105,6 +106,8 @@ async function removeDeletedDoc(docId, options) {
|
|||||||
unflushedTime,
|
unflushedTime,
|
||||||
lastUpdatedAt,
|
lastUpdatedAt,
|
||||||
lastUpdatedBy,
|
lastUpdatedBy,
|
||||||
|
historyRangesSupport,
|
||||||
|
resolvedCommentIds,
|
||||||
status,
|
status,
|
||||||
summary,
|
summary,
|
||||||
},
|
},
|
||||||
@@ -112,7 +115,6 @@ async function removeDeletedDoc(docId, options) {
|
|||||||
)
|
)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
removeDocFromMemory(projectId, docId)
|
|
||||||
logger.info(
|
logger.info(
|
||||||
{
|
{
|
||||||
projectId,
|
projectId,
|
||||||
@@ -125,11 +127,14 @@ async function removeDeletedDoc(docId, options) {
|
|||||||
unflushedTime,
|
unflushedTime,
|
||||||
lastUpdatedAt,
|
lastUpdatedAt,
|
||||||
lastUpdatedBy,
|
lastUpdatedBy,
|
||||||
|
historyRangesSupport,
|
||||||
|
resolvedCommentIds,
|
||||||
status,
|
status,
|
||||||
summary,
|
summary,
|
||||||
},
|
},
|
||||||
'removed doc from redis'
|
'removing doc from redis'
|
||||||
)
|
)
|
||||||
|
await RedisManager.promises.removeDocFromMemory(projectId, docId)
|
||||||
}
|
}
|
||||||
|
|
||||||
async function findAndProcessDocs(options) {
|
async function findAndProcessDocs(options) {
|
||||||
@@ -148,8 +153,26 @@ async function findAndProcessDocs(options) {
|
|||||||
} while (cursor !== '0')
|
} while (cursor !== '0')
|
||||||
}
|
}
|
||||||
|
|
||||||
findAndProcessDocs({ limit: 1000, dryRun: process.env.DRY_RUN !== 'false' })
|
async function main() {
|
||||||
.then(result => {
|
const options = {
|
||||||
|
limit: 1000,
|
||||||
|
dryRun: process.env.DRY_RUN !== 'false',
|
||||||
|
}
|
||||||
|
if (process.argv.length > 2) {
|
||||||
|
const docId = process.argv[process.argv.length - 1]
|
||||||
|
if (!ObjectId.isValid(docId)) {
|
||||||
|
throw new Error(
|
||||||
|
'bad docId: usage: $ node scripts/remove_deleted_docs.js [DOC_ID]'
|
||||||
|
)
|
||||||
|
}
|
||||||
|
await removeDeletedDoc(docId, options)
|
||||||
|
} else {
|
||||||
|
await findAndProcessDocs(options)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
main()
|
||||||
|
.then(() => {
|
||||||
rclient.quit()
|
rclient.quit()
|
||||||
mongoClient.close()
|
mongoClient.close()
|
||||||
console.log('DONE')
|
console.log('DONE')
|
||||||
|
|||||||
Reference in New Issue
Block a user