From 6542ce20b6b91b98acf5e017d533e8696d337830 Mon Sep 17 00:00:00 2001 From: Brian Gough Date: Mon, 7 Aug 2017 14:26:13 +0100 Subject: [PATCH] fix incremental request --- app/coffee/CompileController.coffee | 2 +- app/coffee/CompileManager.coffee | 7 +++++-- app/coffee/ResourceWriter.coffee | 15 ++++++--------- 3 files changed, 12 insertions(+), 12 deletions(-) diff --git a/app/coffee/CompileController.coffee b/app/coffee/CompileController.coffee index 6f93bfe..f4dcb0e 100644 --- a/app/coffee/CompileController.coffee +++ b/app/coffee/CompileController.coffee @@ -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 diff --git a/app/coffee/CompileManager.coffee b/app/coffee/CompileManager.coffee index 8673b52..2b56330 100644 --- a/app/coffee/CompileManager.coffee +++ b/app/coffee/CompileManager.coffee @@ -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() diff --git a/app/coffee/ResourceWriter.coffee b/app/coffee/ResourceWriter.coffee index 725d069..29e0e57 100644 --- a/app/coffee/ResourceWriter.coffee +++ b/app/coffee/ResourceWriter.coffee @@ -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) =>