Merge pull request #133 from overleaf/em-send-output-files-on-timeout

Send output files on timeout
This commit is contained in:
Eric Mc Sween
2019-10-23 08:21:24 -04:00
committed by GitHub
4 changed files with 22 additions and 17 deletions

View File

@@ -26,15 +26,13 @@ module.exports = CompileController =
status = "terminated"
else if error?.validate
status = "validation-#{error.validate}"
else if error?.timedout
status = "timedout"
logger.log err: error, project_id: request.project_id, "timeout running compile"
else if error?
if error.timedout
status = "timedout"
logger.log err: error, project_id: request.project_id, "timeout running compile"
else
status = "error"
code = 500
logger.warn err: error, project_id: request.project_id, "error running compile"
status = "error"
code = 500
logger.warn err: error, project_id: request.project_id, "error running compile"
else
status = "failure"
for file in outputFiles
@@ -49,6 +47,9 @@ module.exports = CompileController =
if file.path is "core"
logger.error project_id:request.project_id, req:req, outputFiles:outputFiles, "core file found in output"
if error?
outputFiles = error.outputFiles || []
timer.done()
res.status(code or 200).send {
compile:

View File

@@ -106,10 +106,11 @@ module.exports = CompileManager =
error = new Error("compilation")
error.validate = "fail"
# compile was killed by user, was a validation, or a compile which failed validation
if error?.terminated or error?.validate
if error?.terminated or error?.validate or error?.timedout
OutputFileFinder.findOutputFiles resourceList, compileDir, (err, outputFiles) ->
return callback(err) if err?
callback(error, outputFiles) # return output files so user can check logs
error.outputFiles = outputFiles # return output files so user can check logs
callback(error)
return
# compile completed normally
return callback(error) if error?

View File

@@ -29,3 +29,6 @@ describe "Timed out compile", ->
it "should return a timedout status", ->
@body.compile.status.should.equal "timedout"
it "should return the log output file name", ->
outputFilePaths = @body.compile.outputFiles.map((x) => x.path)
outputFilePaths.should.include('output.log')