From 66d29940c37de8c6ed18146ac943eb14b63004db Mon Sep 17 00:00:00 2001 From: Eric Mc Sween <5454374+emcsween@users.noreply.github.com> Date: Tue, 2 May 2023 11:52:05 -0400 Subject: [PATCH] Merge pull request #12861 from overleaf/em-ds-delete-chunk-migration Better indexes for history chunks deletion GitOrigin-RevId: 1404f5a0535bc94cb1e9d7fc2ea66fd90f584fea --- ...history_chunks_garbage_collection_index.js | 58 +++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 services/web/migrations/20230428154643_history_chunks_garbage_collection_index.js diff --git a/services/web/migrations/20230428154643_history_chunks_garbage_collection_index.js b/services/web/migrations/20230428154643_history_chunks_garbage_collection_index.js new file mode 100644 index 0000000000..aaf9b7a015 --- /dev/null +++ b/services/web/migrations/20230428154643_history_chunks_garbage_collection_index.js @@ -0,0 +1,58 @@ +/* eslint-disable no-unused-vars */ + +const Helpers = require('./lib/helpers') + +exports.tags = ['server-ce', 'server-pro', 'saas'] + +const oldIndexes = [ + { + key: { + state: 1, + }, + name: 'state_1', + partialFilterExpression: { + state: 'deleted', + }, + }, + { + key: { + state: -1, + }, + name: 'state_pending', + partialFilterExpression: { + state: 'pending', + }, + }, +] +const newIndexes = [ + { + key: { + updatedAt: 1, + }, + name: 'deleted_updated_at', + partialFilterExpression: { + state: 'deleted', + }, + }, + { + key: { + updatedAt: -1, + }, + name: 'pending_updated_at', + partialFilterExpression: { + state: 'pending', + }, + }, +] + +exports.migrate = async client => { + const { db } = client + await Helpers.addIndexesToCollection(db.projectHistoryChunks, newIndexes) + await Helpers.dropIndexesFromCollection(db.projectHistoryChunks, oldIndexes) +} + +exports.rollback = async client => { + const { db } = client + await Helpers.addIndexesToCollection(db.projectHistoryChunks, oldIndexes) + await Helpers.dropIndexesFromCollection(db.projectHistoryChunks, newIndexes) +}