Merge pull request #4255 from overleaf/em-active-projects-expire-2

Create the deleted project record later when deleting a project

GitOrigin-RevId: 2ed21fb4623f4f27be0ed6ca8132cd81aa0a7ced
This commit is contained in:
Eric Mc Sween 2021-07-01 11:02:37 -04:00 committed by Copybot
parent 7430d7f558
commit a966a5f9d7

View file

@ -205,6 +205,36 @@ async function deleteProject(projectId, options = {}) {
throw new Errors.NotFoundError('project not found')
}
await DocumentUpdaterHandler.promises.flushProjectToMongoAndDelete(
projectId
)
try {
// OPTIMIZATION: flush docs out of mongo
await DocstoreManager.promises.archiveProject(projectId)
} catch (err) {
// It is OK to fail here, the docs will get hard-deleted eventually after
// the grace-period for soft-deleted projects has passed.
logger.warn(
{ projectId, err },
'failed archiving doc via docstore as part of project soft-deletion'
)
}
const memberIds = await CollaboratorsGetter.promises.getMemberIds(projectId)
// fire these jobs in the background
for (const memberId of memberIds) {
TagsHandler.promises
.removeProjectFromAllTags(memberId, projectId)
.catch(err => {
logger.err(
{ err, memberId, projectId },
'failed to remove project from tags'
)
})
}
const deleterData = {
deletedAt: new Date(),
deleterId:
@ -239,36 +269,6 @@ async function deleteProject(projectId, options = {}) {
{ upsert: true }
)
await DocumentUpdaterHandler.promises.flushProjectToMongoAndDelete(
projectId
)
try {
// OPTIMIZATION: flush docs out of mongo
await DocstoreManager.promises.archiveProject(projectId)
} catch (err) {
// It is OK to fail here, the docs will get hard-deleted eventually after
// the grace-period for soft-deleted projects has passed.
logger.warn(
{ projectId, err },
'failed archiving doc via docstore as part of project soft-deletion'
)
}
const memberIds = await CollaboratorsGetter.promises.getMemberIds(projectId)
// fire these jobs in the background
for (const memberId of memberIds) {
TagsHandler.promises
.removeProjectFromAllTags(memberId, projectId)
.catch(err => {
logger.err(
{ err, memberId, projectId },
'failed to remove project from tags'
)
})
}
await Project.deleteOne({ _id: projectId }).exec()
} catch (err) {
logger.warn({ err }, 'problem deleting project')