Эх сурвалжийг харах

Begin fixing health-check

Shane Kilkelly 9 жил өмнө
parent
commit
b12f69722f

+ 1 - 1
services/filestore/app/coffee/FileController.coffee

@@ -32,7 +32,7 @@ module.exports = FileController =
 				logger.err err:err, key:key, bucket:bucket, format:format, style:style, "problem getting file"
 				if err instanceof Errors.NotFoundError
 					return res.send 404
-				if !res.finished and res?.send?
+				else
 					return res.send 500
 			else if req.query.cacheWarm
 				logger.log key:key, bucket:bucket, format:format, style:style, "request is only for cache warm so not sending stream"

+ 20 - 24
services/filestore/app/coffee/HealthCheckController.coffee

@@ -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