|
|
@@ -7,21 +7,30 @@ fileController = require("./FileController")
|
|
|
logger = require('logger-sharelatex')
|
|
|
settings = require("settings-sharelatex")
|
|
|
streamBuffers = require("stream-buffers")
|
|
|
+_ = require('underscore')
|
|
|
+
|
|
|
|
|
|
checkCanStoreFiles = (callback)->
|
|
|
+ callback = _.once(callback)
|
|
|
req = {params:{}, query:{}, headers:{}}
|
|
|
- res = {}
|
|
|
req.params.project_id = settings.health_check.project_id
|
|
|
req.params.file_id = settings.health_check.file_id
|
|
|
myWritableStreamBuffer = new streamBuffers.WritableStreamBuffer(initialSize: 100)
|
|
|
+ res = {
|
|
|
+ send: (code) ->
|
|
|
+ if code != 200
|
|
|
+ callback(new Error("non-200 code from getFile: #{code}"))
|
|
|
+ }
|
|
|
+ myWritableStreamBuffer.send = res.send
|
|
|
keyBuilder.userFileKey req, res, ->
|
|
|
fileController.getFile req, myWritableStreamBuffer
|
|
|
myWritableStreamBuffer.on "close", ->
|
|
|
if myWritableStreamBuffer.size() > 0
|
|
|
callback()
|
|
|
else
|
|
|
- logger.err "no data in write stream buffer for health check"
|
|
|
- callback()
|
|
|
+ err = "no data in write stream buffer for health check"
|
|
|
+ logger.err {err,}, "error performing health check"
|
|
|
+ callback(err)
|
|
|
|
|
|
checkFileConvert = (callback)->
|
|
|
imgPath = path.join(settings.path.uploadFolder, "/tiny.pdf")
|
|
|
@@ -34,26 +43,13 @@ checkFileConvert = (callback)->
|
|
|
], callback
|
|
|
|
|
|
|
|
|
-isOk = true
|
|
|
-
|
|
|
-q = async.queue (task, callback)->
|
|
|
- task(callback)
|
|
|
-
|
|
|
-
|
|
|
-runChecks = (callback)->
|
|
|
- async.parallel [checkFileConvert, checkCanStoreFiles], (err)->
|
|
|
- if err?
|
|
|
- logger.err err:err, "Health check: error running"
|
|
|
- isOk = false
|
|
|
- else
|
|
|
- isOk = true
|
|
|
- callback()
|
|
|
-
|
|
|
module.exports =
|
|
|
|
|
|
- check: (req, res)->
|
|
|
- if isOk
|
|
|
- res.send 200
|
|
|
- else
|
|
|
- res.send 500
|
|
|
- q.push runChecks # run in background 1 at a time
|
|
|
+ check: (req, res) ->
|
|
|
+ logger.log {}, "performing health check"
|
|
|
+ async.parallel [checkFileConvert, checkCanStoreFiles], (err)->
|
|
|
+ if err?
|
|
|
+ logger.err err:err, "Health check: error running"
|
|
|
+ res.send 500
|
|
|
+ else
|
|
|
+ res.send 200
|