Merge pull request #123 from overleaf/em-doc-hard-delete
Add ignore_flush_errors option to the doc delete endpoint
This commit is contained in:
@@ -91,7 +91,7 @@ module.exports = DocumentManager =
|
||||
return callback(error) if error?
|
||||
callback null
|
||||
else
|
||||
DocumentManager.flushAndDeleteDoc project_id, doc_id, (error) ->
|
||||
DocumentManager.flushAndDeleteDoc project_id, doc_id, {}, (error) ->
|
||||
# There is no harm in flushing project history if the previous
|
||||
# call failed and sometimes it is required
|
||||
HistoryManager.flushProjectChangesAsync project_id
|
||||
@@ -115,14 +115,18 @@ module.exports = DocumentManager =
|
||||
return callback(error) if error?
|
||||
RedisManager.clearUnflushedTime doc_id, callback
|
||||
|
||||
flushAndDeleteDoc: (project_id, doc_id, _callback = (error) ->) ->
|
||||
flushAndDeleteDoc: (project_id, doc_id, options, _callback) ->
|
||||
timer = new Metrics.Timer("docManager.flushAndDeleteDoc")
|
||||
callback = (args...) ->
|
||||
timer.done()
|
||||
_callback(args...)
|
||||
|
||||
DocumentManager.flushDocIfLoaded project_id, doc_id, (error) ->
|
||||
return callback(error) if error?
|
||||
if error?
|
||||
if options.ignoreFlushErrors
|
||||
logger.warn {project_id: project_id, doc_id: doc_id, err: error}, "ignoring flush error while deleting document"
|
||||
else
|
||||
return callback(error)
|
||||
|
||||
# Flush in the background since it requires a http request
|
||||
HistoryManager.flushDocChangesAsync project_id, doc_id
|
||||
@@ -218,9 +222,9 @@ module.exports = DocumentManager =
|
||||
UpdateManager = require "./UpdateManager"
|
||||
UpdateManager.lockUpdatesAndDo DocumentManager.flushDocIfLoaded, project_id, doc_id, callback
|
||||
|
||||
flushAndDeleteDocWithLock: (project_id, doc_id, callback = (error) ->) ->
|
||||
flushAndDeleteDocWithLock: (project_id, doc_id, options, callback) ->
|
||||
UpdateManager = require "./UpdateManager"
|
||||
UpdateManager.lockUpdatesAndDo DocumentManager.flushAndDeleteDoc, project_id, doc_id, callback
|
||||
UpdateManager.lockUpdatesAndDo DocumentManager.flushAndDeleteDoc, project_id, doc_id, options, callback
|
||||
|
||||
acceptChangesWithLock: (project_id, doc_id, change_ids, callback = (error) ->) ->
|
||||
UpdateManager = require "./UpdateManager"
|
||||
|
||||
@@ -103,12 +103,13 @@ module.exports = HttpController =
|
||||
logger.log project_id: project_id, doc_id: doc_id, "flushed doc via http"
|
||||
res.send 204 # No Content
|
||||
|
||||
flushAndDeleteDoc: (req, res, next = (error) ->) ->
|
||||
deleteDoc: (req, res, next = (error) ->) ->
|
||||
doc_id = req.params.doc_id
|
||||
project_id = req.params.project_id
|
||||
logger.log project_id: project_id, doc_id: doc_id, "deleting doc via http"
|
||||
ignoreFlushErrors = req.query.ignore_flush_errors == 'true'
|
||||
timer = new Metrics.Timer("http.deleteDoc")
|
||||
DocumentManager.flushAndDeleteDocWithLock project_id, doc_id, (error) ->
|
||||
logger.log project_id: project_id, doc_id: doc_id, "deleting doc via http"
|
||||
DocumentManager.flushAndDeleteDocWithLock project_id, doc_id, { ignoreFlushErrors: ignoreFlushErrors }, (error) ->
|
||||
timer.done()
|
||||
# There is no harm in flushing project history if the previous call
|
||||
# failed and sometimes it is required
|
||||
@@ -204,7 +205,7 @@ module.exports = HttpController =
|
||||
|
||||
flushAllProjects: (req, res, next = (error)-> )->
|
||||
res.setTimeout(5 * 60 * 1000)
|
||||
options =
|
||||
options =
|
||||
limit : req.query.limit || 1000
|
||||
concurrency : req.query.concurrency || 5
|
||||
dryRun : req.query.dryRun || false
|
||||
@@ -217,7 +218,7 @@ module.exports = HttpController =
|
||||
|
||||
flushQueuedProjects: (req, res, next = (error) ->) ->
|
||||
res.setTimeout(10 * 60 * 1000)
|
||||
options =
|
||||
options =
|
||||
limit : req.query.limit || 1000
|
||||
timeout: 5 * 60 * 1000
|
||||
min_delete_age: req.query.min_delete_age || 5 * 60 * 1000
|
||||
|
||||
@@ -52,7 +52,7 @@ module.exports = ProjectManager =
|
||||
for doc_id in (doc_ids or [])
|
||||
do (doc_id) ->
|
||||
jobs.push (callback) ->
|
||||
DocumentManager.flushAndDeleteDocWithLock project_id, doc_id, (error) ->
|
||||
DocumentManager.flushAndDeleteDocWithLock project_id, doc_id, {}, (error) ->
|
||||
if error?
|
||||
logger.error err: error, project_id: project_id, doc_id: doc_id, "error deleting doc"
|
||||
errors.push(error)
|
||||
|
||||
Reference in New Issue
Block a user