mirror of
https://github.com/overleaf/overleaf.git
synced 2024-11-21 20:47:08 -05:00
Merge branch 'bg-status-on-shutdown'
This commit is contained in:
commit
a7a161556f
3 changed files with 14 additions and 5 deletions
|
@ -58,7 +58,10 @@ app.get "/", (req, res, next) ->
|
||||||
res.send "real-time-sharelatex is alive"
|
res.send "real-time-sharelatex is alive"
|
||||||
|
|
||||||
app.get "/status", (req, res, next) ->
|
app.get "/status", (req, res, next) ->
|
||||||
res.send "real-time-sharelatex is alive"
|
if Settings.shutDownInProgress
|
||||||
|
res.send 503 # Service unavailable
|
||||||
|
else
|
||||||
|
res.send "real-time-sharelatex is alive"
|
||||||
|
|
||||||
app.get "/debug/events", (req, res, next) ->
|
app.get "/debug/events", (req, res, next) ->
|
||||||
Settings.debugEvents = parseInt(req.query?.count,10) || 20
|
Settings.debugEvents = parseInt(req.query?.count,10) || 20
|
||||||
|
@ -116,17 +119,17 @@ shutdownCleanly = (signal) ->
|
||||||
shutdownCleanly(signal)
|
shutdownCleanly(signal)
|
||||||
, 10000
|
, 10000
|
||||||
|
|
||||||
shutDownInProgress = false
|
Settings.shutDownInProgress = false
|
||||||
if Settings.shutdownDrainTimeWindow?
|
if Settings.shutdownDrainTimeWindow?
|
||||||
Settings.forceDrainMsDelay = parseInt(Settings.shutdownDrainTimeWindow, 10)
|
Settings.forceDrainMsDelay = parseInt(Settings.shutdownDrainTimeWindow, 10)
|
||||||
logger.log shutdownDrainTimeWindow: Settings.shutdownDrainTimeWindow,"shutdownDrainTimeWindow enabled"
|
logger.log shutdownDrainTimeWindow: Settings.shutdownDrainTimeWindow,"shutdownDrainTimeWindow enabled"
|
||||||
for signal in ['SIGINT', 'SIGHUP', 'SIGQUIT', 'SIGUSR1', 'SIGUSR2', 'SIGTERM', 'SIGABRT']
|
for signal in ['SIGINT', 'SIGHUP', 'SIGQUIT', 'SIGUSR1', 'SIGUSR2', 'SIGTERM', 'SIGABRT']
|
||||||
process.on signal, ->
|
process.on signal, ->
|
||||||
if shutDownInProgress
|
if Settings.shutDownInProgress
|
||||||
logger.log signal: signal, "shutdown already in progress, ignoring signal"
|
logger.log signal: signal, "shutdown already in progress, ignoring signal"
|
||||||
return
|
return
|
||||||
else
|
else
|
||||||
shutDownInProgress = true
|
Settings.shutDownInProgress = true
|
||||||
logger.log signal: signal, "received interrupt, starting drain over #{Settings.shutdownDrainTimeWindow} mins"
|
logger.log signal: signal, "received interrupt, starting drain over #{Settings.shutdownDrainTimeWindow} mins"
|
||||||
DrainManager.startDrainTimeWindow(io, Settings.shutdownDrainTimeWindow)
|
DrainManager.startDrainTimeWindow(io, Settings.shutdownDrainTimeWindow)
|
||||||
shutdownCleanly(signal)
|
shutdownCleanly(signal)
|
||||||
|
|
|
@ -40,7 +40,8 @@ module.exports = DocumentUpdaterManager =
|
||||||
logger.log project_id:project_id, "deleting project from document updater"
|
logger.log project_id:project_id, "deleting project from document updater"
|
||||||
timer = new metrics.Timer("delete.mongo.project")
|
timer = new metrics.Timer("delete.mongo.project")
|
||||||
# flush the project in the background when all users have left
|
# flush the project in the background when all users have left
|
||||||
url = "#{settings.apis.documentupdater.url}/project/#{project_id}?background=true"
|
url = "#{settings.apis.documentupdater.url}/project/#{project_id}?background=true" +
|
||||||
|
(if settings.shutDownInProgress then "&shutdown=true" else "")
|
||||||
request.del url, (err, res, body)->
|
request.del url, (err, res, body)->
|
||||||
timer.done()
|
timer.done()
|
||||||
if err?
|
if err?
|
||||||
|
|
|
@ -39,6 +39,11 @@ module.exports = Router =
|
||||||
app.post "/drain", httpAuth, HttpApiController.startDrain
|
app.post "/drain", httpAuth, HttpApiController.startDrain
|
||||||
|
|
||||||
session.on 'connection', (error, client, session) ->
|
session.on 'connection', (error, client, session) ->
|
||||||
|
if settings.shutDownInProgress
|
||||||
|
client.emit("connectionRejected", {message: "retry"})
|
||||||
|
client.disconnect()
|
||||||
|
return
|
||||||
|
|
||||||
if client? and error?.message?.match(/could not look up session by key/)
|
if client? and error?.message?.match(/could not look up session by key/)
|
||||||
logger.warn err: error, client: client?, session: session?, "invalid session"
|
logger.warn err: error, client: client?, session: session?, "invalid session"
|
||||||
# tell the client to reauthenticate if it has an invalid session key
|
# tell the client to reauthenticate if it has an invalid session key
|
||||||
|
|
Loading…
Reference in a new issue