From 34bc2ac9ecaf319a84517fb9bed67c32d3c9cadb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timoth=C3=A9e=20Alby?= Date: Tue, 14 Jun 2022 10:14:35 +0200 Subject: [PATCH] Merge pull request #8402 from overleaf/msm-history-conversion-script [web] Allow running history conversion script on single project GitOrigin-RevId: 799d0a00e2ebabe6c7bbfd6bdbdb58a6025ce53f --- ...pgrade_v1_with_conversion_if_sl_history.js | 55 +++++++++++-------- 1 file changed, 32 insertions(+), 23 deletions(-) diff --git a/services/web/scripts/history/upgrade_v1_with_conversion_if_sl_history.js b/services/web/scripts/history/upgrade_v1_with_conversion_if_sl_history.js index ab66543c4f..2c7f4d3b7f 100644 --- a/services/web/scripts/history/upgrade_v1_with_conversion_if_sl_history.js +++ b/services/web/scripts/history/upgrade_v1_with_conversion_if_sl_history.js @@ -14,8 +14,10 @@ process.env.BATCH_SIZE = BATCH_SIZE process.env.MONGO_SOCKET_TIMEOUT = parseInt(process.env.MONGO_SOCKET_TIMEOUT, 10) || 3600000 -const { ReadPreference } = require('mongodb') -const { db } = require('../../app/src/infrastructure/mongodb') +const PROJECT_ID = process.env.PROJECT_ID + +const { ReadPreference, ObjectId } = require('mongodb') +const { db, waitForDb } = require('../../app/src/infrastructure/mongodb') const { promiseMapWithLimit } = require('../../app/src/util/promises') const { batchedUpdate } = require('../helpers/batchedUpdate') const ProjectHistoryController = require('../../modules/admin-panel/app/src/ProjectHistoryController') @@ -29,6 +31,7 @@ console.log({ MAX_FAILURES, USE_QUERY_HINT, RETRY_FAILED, + PROJECT_ID, }) const RESULT = { @@ -187,28 +190,34 @@ async function anyDocHistoryIndexExists(project) { } async function main() { - const projection = { - _id: 1, - overleaf: 1, + if (PROJECT_ID) { + await waitForDb() + const project = await db.projects.findOne({ _id: ObjectId(PROJECT_ID) }) + await processProject(project) + } else { + const projection = { + _id: 1, + overleaf: 1, + } + const options = {} + if (USE_QUERY_HINT) { + options.hint = { _id: 1 } + } + await batchedUpdate( + 'projects', + { + $and: [ + { 'overleaf.history.display': { $ne: true } }, + { 'overleaf.history.id': { $exists: true } }, + ], + }, + processBatch, + projection, + options + ) + console.log('Final') + console.log(RESULT) } - const options = {} - if (USE_QUERY_HINT) { - options.hint = { _id: 1 } - } - await batchedUpdate( - 'projects', - { - $and: [ - { 'overleaf.history.display': { $ne: true } }, - { 'overleaf.history.id': { $exists: true } }, - ], - }, - processBatch, - projection, - options - ) - console.log('Final') - console.log(RESULT) } // Upgrading history is not atomic, if we quit out mid-initialisation