From b95a2c6d049de2c3f0f01ccbaa60269b5375d59d Mon Sep 17 00:00:00 2001 From: Brian Gough Date: Wed, 31 Aug 2016 15:21:23 +0100 Subject: [PATCH 1/2] clean up compile check use a valid user id, report all failures as errors, clear timeout on success --- services/web/app/coffee/router.coffee | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/services/web/app/coffee/router.coffee b/services/web/app/coffee/router.coffee index 5d07dc9e82..123c20581c 100644 --- a/services/web/app/coffee/router.coffee +++ b/services/web/app/coffee/router.coffee @@ -252,13 +252,24 @@ module.exports = class Router apiRouter.get "/status/compiler/:Project_id", AuthorizationMiddlewear.ensureUserCanReadProject, (req, res) -> sendRes = _.once (statusCode, message)-> - res.writeHead statusCode - res.end message - CompileManager.compile req.params.Project_id, "test-compile", {}, () -> - sendRes 200, "Compiler returned in less than 10 seconds" - setTimeout (() -> + res.status statusCode + res.send message + # set a timeout + handler = setTimeout (() -> sendRes 500, "Compiler timed out" + handler = null ), 10000 + # use a valid user id for testing + test_user_id = "123456789012345678901234" + # run the compile + CompileManager.compile req.params.Project_id, test_user_id, {}, (error, status) -> + clearTimeout handler if handler? + if error? + sendRes 500, "Compiler returned error #{error.message}" + else if status is "success" + sendRes 200, "Compiler returned in less than 10 seconds" + else + sendRes 500, "Compiler returned failure #{status}" apiRouter.get "/ip", (req, res, next) -> res.send({ From e82411ac792d125572cfa72c5466f77230ad0de3 Mon Sep 17 00:00:00 2001 From: Brian Gough Date: Wed, 31 Aug 2016 16:10:24 +0100 Subject: [PATCH 2/2] clear serverid on every compile check --- .../web/app/coffee/Features/Compile/ClsiCookieManager.coffee | 4 ++++ services/web/app/coffee/router.coffee | 5 ++++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/services/web/app/coffee/Features/Compile/ClsiCookieManager.coffee b/services/web/app/coffee/Features/Compile/ClsiCookieManager.coffee index b6270cfce9..c237f212c0 100644 --- a/services/web/app/coffee/Features/Compile/ClsiCookieManager.coffee +++ b/services/web/app/coffee/Features/Compile/ClsiCookieManager.coffee @@ -48,6 +48,10 @@ module.exports = ClsiCookieManager = multi.exec (err)-> callback(err, serverId) + clearServerId: (project_id, callback = (err)->)-> + if !clsiCookiesEnabled + return callback() + rclient.del buildKey(project_id), callback getCookieJar: (project_id, callback = (err, jar)->)-> if !clsiCookiesEnabled diff --git a/services/web/app/coffee/router.coffee b/services/web/app/coffee/router.coffee index 123c20581c..e6de2e7183 100644 --- a/services/web/app/coffee/router.coffee +++ b/services/web/app/coffee/router.coffee @@ -22,6 +22,7 @@ UserPagesController = require('./Features/User/UserPagesController') DocumentController = require('./Features/Documents/DocumentController') CompileManager = require("./Features/Compile/CompileManager") CompileController = require("./Features/Compile/CompileController") +ClsiCookieManager = require("./Features/Compile/ClsiCookieManager") HealthCheckController = require("./Features/HealthCheck/HealthCheckController") ProjectDownloadsController = require "./Features/Downloads/ProjectDownloadsController" FileStoreController = require("./Features/FileStore/FileStoreController") @@ -251,9 +252,11 @@ module.exports = class Router apiRouter.get '/health_check/redis', HealthCheckController.checkRedis apiRouter.get "/status/compiler/:Project_id", AuthorizationMiddlewear.ensureUserCanReadProject, (req, res) -> + project_id = req.params.Project_id sendRes = _.once (statusCode, message)-> res.status statusCode res.send message + ClsiCookieManager.clearServerId project_id # force every compile to a new server # set a timeout handler = setTimeout (() -> sendRes 500, "Compiler timed out" @@ -262,7 +265,7 @@ module.exports = class Router # use a valid user id for testing test_user_id = "123456789012345678901234" # run the compile - CompileManager.compile req.params.Project_id, test_user_id, {}, (error, status) -> + CompileManager.compile project_id, test_user_id, {}, (error, status) -> clearTimeout handler if handler? if error? sendRes 500, "Compiler returned error #{error.message}"