 		res.send {total:count}
 	
 app.get '/status', (req, res)->
-	res.send('document updater is alive')
+	if Settings.shuttingDown
+		res.send 503 # Service unavailable
+	else
+		res.send('document updater is alive')
 
 app.use (error, req, res, next) ->
 	logger.error err: error, "request errored"

	app.use app.router

rclient.subscribe("pending-updates")
rclient.on "message", (channel, doc_key)->
	[project_id, doc_id] = Keys.splitProjectIdAndDocId(doc_key)
	UpdateManager.processOutstandingUpdatesWithLock project_id, doc_id, (error) ->
		logger.error err: error, project_id: project_id, doc_id: doc_id, "error processing update" if error?

UpdateManager.resumeProcessing()


	else
		res.send(500, "Oops, something went wrong")

shutdownCleanly = (signal) ->
	return () ->
		logger.log signal: signal, "received interrupt, cleaning up"
		Settings.shuttingDown = true
		setTimeout () ->
			logger.log signal: signal, "shutting down"
			process.exit()
		, 10000


port = Settings.internal?.documentupdater?.port or Settings.apis?.documentupdater?.port or 3003
app.listen port, "localhost", ->
	logger.log("documentupdater-sharelatex server listening on port #{port}")

for signal in ['SIGINT', 'SIGHUP', 'SIGQUIT', 'SIGUSR1', 'SIGUSR2', 'SIGTERM', 'SIGABRT']
	process.on signal, shutdownCleanly(signal)