mirror of
https://github.com/overleaf/overleaf.git
synced 2025-02-16 18:32:35 +00:00
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:
parent
7430d7f558
commit
a966a5f9d7
1 changed files with 30 additions and 30 deletions
|
@ -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')
|
||||
|
|
Loading…
Reference in a new issue