fix incremental request

This commit is contained in:
Brian Gough
2017-08-07 14:26:13 +01:00
parent b4be40d061
commit 6542ce20b6
3 changed files with 12 additions and 12 deletions

View File

@@ -16,7 +16,7 @@ module.exports = CompileController =
ProjectPersistenceManager.markProjectAsJustAccessed request.project_id, (error) ->
return next(error) if error?
CompileManager.doCompile request, (error, outputFiles = []) ->
if error instanceOf Errors.FilesOutOfSyncError
if error instanceof Errors.FilesOutOfSyncError
code = 409 # Http 409 Conflict
status = "retry"
else if error?.terminated

View File

@@ -32,9 +32,12 @@ module.exports = CompileManager =
timer = new Metrics.Timer("write-to-disk")
logger.log project_id: request.project_id, user_id: request.user_id, "syncing resources to disk"
ResourceWriter.syncResourcesToDisk request, compileDir, (error) ->
if error?
if error? and error instanceof Errors.FilesOutOfSyncError
logger.warn project_id: request.project_id, user_id: request.user_id, "files out of sync, please retry"
return callback(error)
else if error?
logger.err err:error, project_id: request.project_id, user_id: request.user_id, "error writing resources to disk"
return callback(error)
return callback(error)
logger.log project_id: request.project_id, user_id: request.user_id, time_taken: Date.now() - timer.start, "written files to disk"
timer.done()

View File

@@ -14,10 +14,10 @@ parallelFileDownloads = settings.parallelFileDownloads or 1
module.exports = ResourceWriter =
syncResourcesToDisk: (request, basePath, callback = (error) ->) ->
if request.syncType? is "incremental"
ResourceWriter.checkSyncState request.syncState, basePath, (error, ok) ->
logger.log syncState: request.syncState, result:ok, "checked state on incremental request"
return callback new Errors.FilesOutOfSyncError("invalid state for incremental update") if not ok
if request.syncType is "incremental"
ResourceWriter.checkSyncState request.syncState, basePath, (error, syncStateOk) ->
logger.log syncState: request.syncState, result:syncStateOk, "checked state on incremental request"
return callback new Errors.FilesOutOfSyncError("invalid state for incremental update") if not syncStateOk
ResourceWriter.saveIncrementalResourcesToDisk request.project_id, request.resources, basePath, callback
else
@saveAllResourcesToDisk request.project_id, request.resources, basePath, (error) ->
@@ -30,11 +30,8 @@ module.exports = ResourceWriter =
checkSyncState: (state, basePath, callback) ->
fs.readFile Path.join(basePath, ".resource-sync-state"), {encoding:'ascii'}, (err, oldState) ->
logger.log state:state, oldState: oldState, basePath:basePath, err:err, "checking sync state"
if state is oldState
return callback(null, true)
else
return callback(null, false)
# ignore errors, return true if state matches, false otherwise (including errors)
return callback(null, if state is oldState then true else false)
saveIncrementalResourcesToDisk: (project_id, resources, basePath, callback = (error) ->) ->
@_createDirectory basePath, (error) =>