From cd48caeaa12b330ddfd5ae2167cf2cd40d439cd2 Mon Sep 17 00:00:00 2001 From: Domagoj Kriskovic Date: Tue, 28 Jan 2025 14:15:11 +0100 Subject: [PATCH] Updated mongo index for ProjectDeleter (#23138) GitOrigin-RevId: aa26f29b8917b0d6ff836cc03f82b74066a7dcd4 --- .../src/Features/Project/ProjectDeleter.js | 2 +- ...914_update_deleterData.deletedAt_index.mjs | 44 +++++++++++++++++++ .../unit/src/Project/ProjectDeleterTests.js | 2 +- 3 files changed, 46 insertions(+), 2 deletions(-) create mode 100644 services/web/migrations/20250126195914_update_deleterData.deletedAt_index.mjs diff --git a/services/web/app/src/Features/Project/ProjectDeleter.js b/services/web/app/src/Features/Project/ProjectDeleter.js index 5e8df133bd..13185b21c5 100644 --- a/services/web/app/src/Features/Project/ProjectDeleter.js +++ b/services/web/app/src/Features/Project/ProjectDeleter.js @@ -90,7 +90,7 @@ async function expireDeletedProjectsAfterDuration() { 'deleterData.deletedAt': { $lt: new Date(moment().subtract(EXPIRE_PROJECTS_AFTER_DAYS, 'days')), }, - project: { $ne: null }, + project: { $type: 'object' }, }, { 'deleterData.deletedProjectId': 1 } ) diff --git a/services/web/migrations/20250126195914_update_deleterData.deletedAt_index.mjs b/services/web/migrations/20250126195914_update_deleterData.deletedAt_index.mjs new file mode 100644 index 0000000000..b2264a02c3 --- /dev/null +++ b/services/web/migrations/20250126195914_update_deleterData.deletedAt_index.mjs @@ -0,0 +1,44 @@ +/* eslint-disable no-unused-vars */ + +import Helpers from './lib/helpers.mjs' + +const tags = ['server-ce', 'server-pro', 'saas'] + +const oldIndex = { + key: { + 'deleterData.deletedAt': 1, + }, + name: 'deleterData.deletedAt_1', +} + +const newIndex = { + key: { + 'deleterData.deletedAt': 1, + }, + name: 'deleterData.deletedAt_1', + partialFilterExpression: { project: { $type: 'object' } }, +} + +const migrate = async client => { + const { db } = client + + await Helpers.dropIndexesFromCollection(db.deletedProjects, [oldIndex]) + await Helpers.addIndexesToCollection(db.deletedProjects, [newIndex]) +} + +const rollback = async client => { + const { db } = client + + try { + await Helpers.dropIndexesFromCollection(db.deletedProjects, [newIndex]) + await Helpers.addIndexesToCollection(db.deletedProjects, [oldIndex]) + } catch (err) { + console.error('Something went wrong rolling back the migrations', err) + } +} + +export default { + tags, + migrate, + rollback, +} diff --git a/services/web/test/unit/src/Project/ProjectDeleterTests.js b/services/web/test/unit/src/Project/ProjectDeleterTests.js index 6946aa348b..6b76aaa060 100644 --- a/services/web/test/unit/src/Project/ProjectDeleterTests.js +++ b/services/web/test/unit/src/Project/ProjectDeleterTests.js @@ -397,7 +397,7 @@ describe('ProjectDeleter', function () { $lt: new Date(moment().subtract(90, 'days')), }, project: { - $ne: null, + $type: 'object', }, }) .chain('exec')