From daf4f1ffd49a1b542e424ce68b47d53b3751d4e3 Mon Sep 17 00:00:00 2001 From: James Allen Date: Fri, 23 May 2014 13:54:20 +0100 Subject: [PATCH 01/10] Send content-length header when getting file --- .../app/coffee/FSPersistorManager.coffee | 13 +++++++------ .../app/coffee/FileController.coffee | 3 ++- .../filestore/app/coffee/FileHandler.coffee | 10 +++++----- .../app/coffee/S3PersistorManager.coffee | 4 ++-- .../coffee/FSPersistorManagerTests.coffee | 9 +++++---- .../unit/coffee/FileControllerTests.coffee | 5 +++-- .../coffee/S3PersistorManagerTests.coffee | 19 ++++++++++++++----- 7 files changed, 38 insertions(+), 25 deletions(-) diff --git a/services/filestore/app/coffee/FSPersistorManager.coffee b/services/filestore/app/coffee/FSPersistorManager.coffee index 032d4edb29..c86cd35727 100644 --- a/services/filestore/app/coffee/FSPersistorManager.coffee +++ b/services/filestore/app/coffee/FSPersistorManager.coffee @@ -28,12 +28,13 @@ module.exports = getFileStream: (location, name, callback = (err, res)->)-> filteredName = filterName name logger.log location:location, name:filteredName, "getting file" - sourceStream = fs.createReadStream "#{location}/#{filteredName}" - sourceStream.on 'error', (err) -> - logger.err err:err, location:location, name:name, "Error reading from file" - callback err - callback null,sourceStream - + path = "#{location}/#{filteredName}" + fs.stat path, (error, stat) -> + sourceStream = fs.createReadStream path + sourceStream.on 'error', (err) -> + logger.err err:err, location:location, name:name, "Error reading from file" + callback err + callback null, sourceStream, stat.size copyFile: (location, fromName, toName, callback = (err)->)-> filteredFromName=filterName fromName diff --git a/services/filestore/app/coffee/FileController.coffee b/services/filestore/app/coffee/FileController.coffee index 3b83e203fd..2d3792642e 100644 --- a/services/filestore/app/coffee/FileController.coffee +++ b/services/filestore/app/coffee/FileController.coffee @@ -12,7 +12,7 @@ module.exports = {key, bucket} = req {format, style} = req.query logger.log key:key, bucket:bucket, format:format, style:style, "reciving request to get file" - FileHandler.getFile bucket, key, {format:format,style:style}, (err, fileStream)-> + FileHandler.getFile bucket, key, {format:format,style:style}, (err, fileStream, size)-> if err? logger.err err:err, key:key, bucket:bucket, format:format, style:style, "problem getting file" if !res.finished and res?.send? @@ -22,6 +22,7 @@ module.exports = res.send 200 else logger.log key:key, bucket:bucket, format:format, style:style, "sending file to response" + res.header("Content-Length", size) fileStream.pipe res insertFile: (req, res)-> diff --git a/services/filestore/app/coffee/FileHandler.coffee b/services/filestore/app/coffee/FileHandler.coffee index aa9602b5a8..b2535e4488 100644 --- a/services/filestore/app/coffee/FileHandler.coffee +++ b/services/filestore/app/coffee/FileHandler.coffee @@ -22,20 +22,20 @@ module.exports = (done)-> PersistorManager.deleteFile bucket, convetedKey, done ], callback - getFile: (bucket, key, opts = {}, callback)-> + getFile: (bucket, key, opts = {}, callback = (err, fileStream, size) ->)-> logger.log bucket:bucket, key:key, opts:opts, "getting file" if !opts.format? and !opts.style? @_getStandardFile bucket, key, opts, callback else @_getConvertedFile bucket, key, opts, callback - _getStandardFile: (bucket, key, opts, callback)-> - PersistorManager.getFileStream bucket, key, (err, fileStream)-> + _getStandardFile: (bucket, key, opts, callback = (err, fileStream, size) ->)-> + PersistorManager.getFileStream bucket, key, (err, fileStream, size)-> if err? logger.err bucket:bucket, key:key, opts:opts, "error getting fileStream" - callback err, fileStream + callback err, fileStream, size - _getConvertedFile: (bucket, key, opts, callback)-> + _getConvertedFile: (bucket, key, opts, callback = (err, fileStream, size) ->)-> convetedKey = KeyBuilder.addCachingToKey(key, opts) PersistorManager.checkIfFileExists bucket, convetedKey, (err, exists)=> if exists diff --git a/services/filestore/app/coffee/S3PersistorManager.coffee b/services/filestore/app/coffee/S3PersistorManager.coffee index 432294ced6..97759e879b 100644 --- a/services/filestore/app/coffee/S3PersistorManager.coffee +++ b/services/filestore/app/coffee/S3PersistorManager.coffee @@ -67,7 +67,7 @@ module.exports = return callback(err) @sendFile bucketName, key, fsPath, callback - getFileStream: (bucketName, key, callback = (err, res)->)-> + getFileStream: (bucketName, key, callback = (err, res, size)->)-> logger.log bucketName:bucketName, key:key, "getting file from s3" s3Client = knox.createClient key: settings.filestore.s3.key @@ -76,7 +76,7 @@ module.exports = s3Stream = s3Client.get(key) s3Stream.end() s3Stream.on 'response', (res) -> - callback null, res + callback null, res, res.headers["content-length"] s3Stream.on 'error', (err) -> logger.err err:err, bucketName:bucketName, key:key, "error getting file stream from s3" callback err diff --git a/services/filestore/test/unit/coffee/FSPersistorManagerTests.coffee b/services/filestore/test/unit/coffee/FSPersistorManagerTests.coffee index bf5f08ea9d..757d1cc8df 100644 --- a/services/filestore/test/unit/coffee/FSPersistorManagerTests.coffee +++ b/services/filestore/test/unit/coffee/FSPersistorManagerTests.coffee @@ -66,11 +66,12 @@ describe "FSPersistorManagerTests", -> describe "getFileStream", -> it "should use correct file location", (done) -> - @Fs.createReadStream.returns( - on:-> - ) - @FSPersistorManager.getFileStream @location, @name1, (err,res)=> + @Fs.createReadStream.returns(@stream = on:->) + @Fs.stat = sinon.stub().callsArgWith(1, null, { size: @size = 42 }) + @FSPersistorManager.getFileStream @location, @name1, (err, res, size)=> @Fs.createReadStream.calledWith("#{@location}/#{@name1Filtered}").should.equal.true + res.should.equal @stream + size.should.equal @size done() describe "copyFile", -> diff --git a/services/filestore/test/unit/coffee/FileControllerTests.coffee b/services/filestore/test/unit/coffee/FileControllerTests.coffee index ecf067976f..d30d819f2a 100644 --- a/services/filestore/test/unit/coffee/FileControllerTests.coffee +++ b/services/filestore/test/unit/coffee/FileControllerTests.coffee @@ -43,15 +43,16 @@ describe "FileController", -> project_id:@project_id file_id:@file_id @res = - setHeader: -> + header: sinon.stub() @fileStream = {} describe "getFile", -> it "should pipe the stream", (done)-> - @FileHandler.getFile.callsArgWith(3, null, @fileStream) + @FileHandler.getFile.callsArgWith(3, null, @fileStream, @size = 42) @fileStream.pipe = (res)=> res.should.equal @res + res.header.calledWith("Content-Length", @size).should.equal true done() @controller.getFile @req, @res diff --git a/services/filestore/test/unit/coffee/S3PersistorManagerTests.coffee b/services/filestore/test/unit/coffee/S3PersistorManagerTests.coffee index fe70f1008d..efe142a6f8 100644 --- a/services/filestore/test/unit/coffee/S3PersistorManagerTests.coffee +++ b/services/filestore/test/unit/coffee/S3PersistorManagerTests.coffee @@ -45,13 +45,22 @@ describe "S3PersistorManagerTests", -> it "should use correct key", (done)-> - @stubbedKnoxClient.get.returns( - on:-> + @response = + headers: + "content-length": @size = 42 + + @stubbedKnoxClient.get.returns(@stream = + on: (e, callback) => + if e == "response" + callback(@response) end:-> + ) - @S3PersistorManager.getFileStream @bucketName, @key, @fsPath, (err)=> - @stubbedKnoxClient.get.calledWith(@key).should.equal true - done() + @S3PersistorManager.getFileStream @bucketName, @key, (err, res, size) => + res.should.equal @response + size.should.equal @size + @stubbedKnoxClient.get.calledWith(@key).should.equal true + done() describe "sendFile", -> From e5298752458e953b81ac995f26b0474e14cb2793 Mon Sep 17 00:00:00 2001 From: James Allen Date: Fri, 23 May 2014 13:57:18 +0100 Subject: [PATCH 02/10] Revert "Send content-length header when getting file" This reverts commit 6f5f7a98fd3ce53091aacc744f43c7704ba73461. --- .../app/coffee/FSPersistorManager.coffee | 13 ++++++------- .../app/coffee/FileController.coffee | 3 +-- .../filestore/app/coffee/FileHandler.coffee | 10 +++++----- .../app/coffee/S3PersistorManager.coffee | 4 ++-- .../coffee/FSPersistorManagerTests.coffee | 9 ++++----- .../unit/coffee/FileControllerTests.coffee | 5 ++--- .../coffee/S3PersistorManagerTests.coffee | 19 +++++-------------- 7 files changed, 25 insertions(+), 38 deletions(-) diff --git a/services/filestore/app/coffee/FSPersistorManager.coffee b/services/filestore/app/coffee/FSPersistorManager.coffee index c86cd35727..032d4edb29 100644 --- a/services/filestore/app/coffee/FSPersistorManager.coffee +++ b/services/filestore/app/coffee/FSPersistorManager.coffee @@ -28,13 +28,12 @@ module.exports = getFileStream: (location, name, callback = (err, res)->)-> filteredName = filterName name logger.log location:location, name:filteredName, "getting file" - path = "#{location}/#{filteredName}" - fs.stat path, (error, stat) -> - sourceStream = fs.createReadStream path - sourceStream.on 'error', (err) -> - logger.err err:err, location:location, name:name, "Error reading from file" - callback err - callback null, sourceStream, stat.size + sourceStream = fs.createReadStream "#{location}/#{filteredName}" + sourceStream.on 'error', (err) -> + logger.err err:err, location:location, name:name, "Error reading from file" + callback err + callback null,sourceStream + copyFile: (location, fromName, toName, callback = (err)->)-> filteredFromName=filterName fromName diff --git a/services/filestore/app/coffee/FileController.coffee b/services/filestore/app/coffee/FileController.coffee index 2d3792642e..3b83e203fd 100644 --- a/services/filestore/app/coffee/FileController.coffee +++ b/services/filestore/app/coffee/FileController.coffee @@ -12,7 +12,7 @@ module.exports = {key, bucket} = req {format, style} = req.query logger.log key:key, bucket:bucket, format:format, style:style, "reciving request to get file" - FileHandler.getFile bucket, key, {format:format,style:style}, (err, fileStream, size)-> + FileHandler.getFile bucket, key, {format:format,style:style}, (err, fileStream)-> if err? logger.err err:err, key:key, bucket:bucket, format:format, style:style, "problem getting file" if !res.finished and res?.send? @@ -22,7 +22,6 @@ module.exports = res.send 200 else logger.log key:key, bucket:bucket, format:format, style:style, "sending file to response" - res.header("Content-Length", size) fileStream.pipe res insertFile: (req, res)-> diff --git a/services/filestore/app/coffee/FileHandler.coffee b/services/filestore/app/coffee/FileHandler.coffee index b2535e4488..aa9602b5a8 100644 --- a/services/filestore/app/coffee/FileHandler.coffee +++ b/services/filestore/app/coffee/FileHandler.coffee @@ -22,20 +22,20 @@ module.exports = (done)-> PersistorManager.deleteFile bucket, convetedKey, done ], callback - getFile: (bucket, key, opts = {}, callback = (err, fileStream, size) ->)-> + getFile: (bucket, key, opts = {}, callback)-> logger.log bucket:bucket, key:key, opts:opts, "getting file" if !opts.format? and !opts.style? @_getStandardFile bucket, key, opts, callback else @_getConvertedFile bucket, key, opts, callback - _getStandardFile: (bucket, key, opts, callback = (err, fileStream, size) ->)-> - PersistorManager.getFileStream bucket, key, (err, fileStream, size)-> + _getStandardFile: (bucket, key, opts, callback)-> + PersistorManager.getFileStream bucket, key, (err, fileStream)-> if err? logger.err bucket:bucket, key:key, opts:opts, "error getting fileStream" - callback err, fileStream, size + callback err, fileStream - _getConvertedFile: (bucket, key, opts, callback = (err, fileStream, size) ->)-> + _getConvertedFile: (bucket, key, opts, callback)-> convetedKey = KeyBuilder.addCachingToKey(key, opts) PersistorManager.checkIfFileExists bucket, convetedKey, (err, exists)=> if exists diff --git a/services/filestore/app/coffee/S3PersistorManager.coffee b/services/filestore/app/coffee/S3PersistorManager.coffee index 97759e879b..432294ced6 100644 --- a/services/filestore/app/coffee/S3PersistorManager.coffee +++ b/services/filestore/app/coffee/S3PersistorManager.coffee @@ -67,7 +67,7 @@ module.exports = return callback(err) @sendFile bucketName, key, fsPath, callback - getFileStream: (bucketName, key, callback = (err, res, size)->)-> + getFileStream: (bucketName, key, callback = (err, res)->)-> logger.log bucketName:bucketName, key:key, "getting file from s3" s3Client = knox.createClient key: settings.filestore.s3.key @@ -76,7 +76,7 @@ module.exports = s3Stream = s3Client.get(key) s3Stream.end() s3Stream.on 'response', (res) -> - callback null, res, res.headers["content-length"] + callback null, res s3Stream.on 'error', (err) -> logger.err err:err, bucketName:bucketName, key:key, "error getting file stream from s3" callback err diff --git a/services/filestore/test/unit/coffee/FSPersistorManagerTests.coffee b/services/filestore/test/unit/coffee/FSPersistorManagerTests.coffee index 757d1cc8df..bf5f08ea9d 100644 --- a/services/filestore/test/unit/coffee/FSPersistorManagerTests.coffee +++ b/services/filestore/test/unit/coffee/FSPersistorManagerTests.coffee @@ -66,12 +66,11 @@ describe "FSPersistorManagerTests", -> describe "getFileStream", -> it "should use correct file location", (done) -> - @Fs.createReadStream.returns(@stream = on:->) - @Fs.stat = sinon.stub().callsArgWith(1, null, { size: @size = 42 }) - @FSPersistorManager.getFileStream @location, @name1, (err, res, size)=> + @Fs.createReadStream.returns( + on:-> + ) + @FSPersistorManager.getFileStream @location, @name1, (err,res)=> @Fs.createReadStream.calledWith("#{@location}/#{@name1Filtered}").should.equal.true - res.should.equal @stream - size.should.equal @size done() describe "copyFile", -> diff --git a/services/filestore/test/unit/coffee/FileControllerTests.coffee b/services/filestore/test/unit/coffee/FileControllerTests.coffee index d30d819f2a..ecf067976f 100644 --- a/services/filestore/test/unit/coffee/FileControllerTests.coffee +++ b/services/filestore/test/unit/coffee/FileControllerTests.coffee @@ -43,16 +43,15 @@ describe "FileController", -> project_id:@project_id file_id:@file_id @res = - header: sinon.stub() + setHeader: -> @fileStream = {} describe "getFile", -> it "should pipe the stream", (done)-> - @FileHandler.getFile.callsArgWith(3, null, @fileStream, @size = 42) + @FileHandler.getFile.callsArgWith(3, null, @fileStream) @fileStream.pipe = (res)=> res.should.equal @res - res.header.calledWith("Content-Length", @size).should.equal true done() @controller.getFile @req, @res diff --git a/services/filestore/test/unit/coffee/S3PersistorManagerTests.coffee b/services/filestore/test/unit/coffee/S3PersistorManagerTests.coffee index efe142a6f8..fe70f1008d 100644 --- a/services/filestore/test/unit/coffee/S3PersistorManagerTests.coffee +++ b/services/filestore/test/unit/coffee/S3PersistorManagerTests.coffee @@ -45,22 +45,13 @@ describe "S3PersistorManagerTests", -> it "should use correct key", (done)-> - @response = - headers: - "content-length": @size = 42 - - @stubbedKnoxClient.get.returns(@stream = - on: (e, callback) => - if e == "response" - callback(@response) + @stubbedKnoxClient.get.returns( + on:-> end:-> - ) - @S3PersistorManager.getFileStream @bucketName, @key, (err, res, size) => - res.should.equal @response - size.should.equal @size - @stubbedKnoxClient.get.calledWith(@key).should.equal true - done() + @S3PersistorManager.getFileStream @bucketName, @key, @fsPath, (err)=> + @stubbedKnoxClient.get.calledWith(@key).should.equal true + done() describe "sendFile", -> From 415d937f846ddf5173f7152caf75df0cc0962f83 Mon Sep 17 00:00:00 2001 From: James Allen Date: Mon, 2 Jun 2014 16:49:49 +0100 Subject: [PATCH 03/10] Add more logging and don't delete temp files --- .../filestore/app/coffee/S3PersistorManager.coffee | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/services/filestore/app/coffee/S3PersistorManager.coffee b/services/filestore/app/coffee/S3PersistorManager.coffee index 432294ced6..ef8cf3ea4d 100644 --- a/services/filestore/app/coffee/S3PersistorManager.coffee +++ b/services/filestore/app/coffee/S3PersistorManager.coffee @@ -49,9 +49,9 @@ module.exports = if res.statusCode != 200 logger.err bucketName:bucketName, key:key, fsPath:fsPath, "non 200 response from s3 putting file" return callback("non 200 response from s3 on put file") - LocalFileWriter.deleteFile fsPath, (err)-> - logger.log res:res, bucketName:bucketName, key:key, fsPath:fsPath,"file uploaded to s3" - callback(err) + #LocalFileWriter.deleteFile fsPath, (err)-> + logger.log res:res, bucketName:bucketName, key:key, fsPath:fsPath,"file uploaded to s3" + callback(err) putEventEmiter.on "error", (err)-> logger.err err:err, bucketName:bucketName, key:key, fsPath:fsPath, "error emmited on put of file" callback err @@ -100,7 +100,12 @@ module.exports = logger.err err:err, res:res, bucketName:bucketName, key:key, "something went wrong deleting file in aws" callback(err) - deleteDirectory: (bucketName, key, callback)-> + deleteDirectory: (bucketName, key, _callback)-> + callback = (args...) -> + logger.log key: key, bucketName: bucketName, "calling delete callback" + _callback(args...) + + logger.log key: key, bucketName: bucketName, "deleting directory" s3Client = knox.createClient key: settings.filestore.s3.key secret: settings.filestore.s3.secret From b3f796a093c72b85db516103635508bc194a8aef Mon Sep 17 00:00:00 2001 From: James Allen Date: Mon, 2 Jun 2014 17:02:45 +0100 Subject: [PATCH 04/10] More logging --- services/filestore/app/coffee/S3PersistorManager.coffee | 1 + 1 file changed, 1 insertion(+) diff --git a/services/filestore/app/coffee/S3PersistorManager.coffee b/services/filestore/app/coffee/S3PersistorManager.coffee index ef8cf3ea4d..fbbd673499 100644 --- a/services/filestore/app/coffee/S3PersistorManager.coffee +++ b/services/filestore/app/coffee/S3PersistorManager.coffee @@ -111,6 +111,7 @@ module.exports = secret: settings.filestore.s3.secret bucket: bucketName s3Client.list prefix:key, (err, data)-> + logger.log data: data, key: key, bucketName: bucketName, "got file list" keys = _.map data.Contents, (entry)-> return entry.Key s3Client.deleteMultiple keys, callback From e17aaba3bad9a23bfc24baced237604684edfb57 Mon Sep 17 00:00:00 2001 From: James Allen Date: Mon, 2 Jun 2014 17:11:25 +0100 Subject: [PATCH 05/10] Catch errors correctly --- services/filestore/app/coffee/FileHandler.coffee | 6 +++--- services/filestore/app/coffee/S3PersistorManager.coffee | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/services/filestore/app/coffee/FileHandler.coffee b/services/filestore/app/coffee/FileHandler.coffee index aa9602b5a8..8968470300 100644 --- a/services/filestore/app/coffee/FileHandler.coffee +++ b/services/filestore/app/coffee/FileHandler.coffee @@ -11,9 +11,9 @@ module.exports = insertFile: (bucket, key, stream, callback)-> convetedKey = KeyBuilder.getConvertedFolderKey(key) - PersistorManager.deleteDirectory bucket, convetedKey, -> - PersistorManager.sendStream bucket, key, stream, -> - callback() + PersistorManager.deleteDirectory bucket, convetedKey, (error) -> + return callback(error) if error? + PersistorManager.sendStream bucket, key, stream, callback deleteFile: (bucket, key, callback)-> convetedKey = KeyBuilder.getConvertedFolderKey(bucket, key) diff --git a/services/filestore/app/coffee/S3PersistorManager.coffee b/services/filestore/app/coffee/S3PersistorManager.coffee index fbbd673499..dead151905 100644 --- a/services/filestore/app/coffee/S3PersistorManager.coffee +++ b/services/filestore/app/coffee/S3PersistorManager.coffee @@ -102,7 +102,7 @@ module.exports = deleteDirectory: (bucketName, key, _callback)-> callback = (args...) -> - logger.log key: key, bucketName: bucketName, "calling delete callback" + logger.log key: key, bucketName: bucketName, args: args, "calling delete callback" _callback(args...) logger.log key: key, bucketName: bucketName, "deleting directory" From df6b5132c2176bcdff1658cb761f4a529ffafa9e Mon Sep 17 00:00:00 2001 From: James Allen Date: Mon, 2 Jun 2014 17:25:40 +0100 Subject: [PATCH 06/10] Tidy up testing/logging --- .../filestore/app/coffee/S3PersistorManager.coffee | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/services/filestore/app/coffee/S3PersistorManager.coffee b/services/filestore/app/coffee/S3PersistorManager.coffee index dead151905..703241920d 100644 --- a/services/filestore/app/coffee/S3PersistorManager.coffee +++ b/services/filestore/app/coffee/S3PersistorManager.coffee @@ -49,9 +49,9 @@ module.exports = if res.statusCode != 200 logger.err bucketName:bucketName, key:key, fsPath:fsPath, "non 200 response from s3 putting file" return callback("non 200 response from s3 on put file") - #LocalFileWriter.deleteFile fsPath, (err)-> - logger.log res:res, bucketName:bucketName, key:key, fsPath:fsPath,"file uploaded to s3" - callback(err) + LocalFileWriter.deleteFile fsPath, (err)-> + logger.log res:res, bucketName:bucketName, key:key, fsPath:fsPath,"file uploaded to s3" + callback(err) putEventEmiter.on "error", (err)-> logger.err err:err, bucketName:bucketName, key:key, fsPath:fsPath, "error emmited on put of file" callback err @@ -101,9 +101,10 @@ module.exports = callback(err) deleteDirectory: (bucketName, key, _callback)-> + # deleteMultiple can call the callback multiple times so protect against this. callback = (args...) -> - logger.log key: key, bucketName: bucketName, args: args, "calling delete callback" _callback(args...) + _callback = () -> logger.log key: key, bucketName: bucketName, "deleting directory" s3Client = knox.createClient @@ -111,7 +112,6 @@ module.exports = secret: settings.filestore.s3.secret bucket: bucketName s3Client.list prefix:key, (err, data)-> - logger.log data: data, key: key, bucketName: bucketName, "got file list" keys = _.map data.Contents, (entry)-> return entry.Key s3Client.deleteMultiple keys, callback From a9be97622b37f39b2b709d191401f23a767705d2 Mon Sep 17 00:00:00 2001 From: c4live Date: Thu, 5 Jun 2014 10:31:05 +0200 Subject: [PATCH 07/10] Update FileHandler.coffee: ignore any error that happens while deleting directory during insertFile. --- services/filestore/app/coffee/FileHandler.coffee | 1 - 1 file changed, 1 deletion(-) diff --git a/services/filestore/app/coffee/FileHandler.coffee b/services/filestore/app/coffee/FileHandler.coffee index 8968470300..795460629a 100644 --- a/services/filestore/app/coffee/FileHandler.coffee +++ b/services/filestore/app/coffee/FileHandler.coffee @@ -12,7 +12,6 @@ module.exports = insertFile: (bucket, key, stream, callback)-> convetedKey = KeyBuilder.getConvertedFolderKey(key) PersistorManager.deleteDirectory bucket, convetedKey, (error) -> - return callback(error) if error? PersistorManager.sendStream bucket, key, stream, callback deleteFile: (bucket, key, callback)-> From 1e42221954fcaec1a28aaecde6dbf1c2eb3f8132 Mon Sep 17 00:00:00 2001 From: c4live Date: Thu, 5 Jun 2014 14:10:05 +0200 Subject: [PATCH 08/10] Update FSPersistorManager.coffee Do not propagate the error if trying to delete a directory that does not exist. --- services/filestore/app/coffee/FSPersistorManager.coffee | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/services/filestore/app/coffee/FSPersistorManager.coffee b/services/filestore/app/coffee/FSPersistorManager.coffee index 032d4edb29..992a9b25be 100644 --- a/services/filestore/app/coffee/FSPersistorManager.coffee +++ b/services/filestore/app/coffee/FSPersistorManager.coffee @@ -60,7 +60,10 @@ module.exports = filteredName = filterName name fs.rmdir "#{location}/#{filteredName}", (err) -> logger.err err:err, location:location, name:filteredName, "Error on rmdir." - callback err + if err and err.errno != 34 + callback err + else + callback() checkIfFileExists:(location, name, callback = (err,exists)->)-> filteredName = filterName name From 5bc89c3cbfca0fa9de05720e6579f3ed0b7926e6 Mon Sep 17 00:00:00 2001 From: c4live Date: Thu, 5 Jun 2014 14:10:49 +0200 Subject: [PATCH 09/10] Update FileHandler.coffee Restoring error check. --- services/filestore/app/coffee/FileHandler.coffee | 1 + 1 file changed, 1 insertion(+) diff --git a/services/filestore/app/coffee/FileHandler.coffee b/services/filestore/app/coffee/FileHandler.coffee index 795460629a..8968470300 100644 --- a/services/filestore/app/coffee/FileHandler.coffee +++ b/services/filestore/app/coffee/FileHandler.coffee @@ -12,6 +12,7 @@ module.exports = insertFile: (bucket, key, stream, callback)-> convetedKey = KeyBuilder.getConvertedFolderKey(key) PersistorManager.deleteDirectory bucket, convetedKey, (error) -> + return callback(error) if error? PersistorManager.sendStream bucket, key, stream, callback deleteFile: (bucket, key, callback)-> From 408bf43b985bd5fdc3798b89a87f0e1a06c63160 Mon Sep 17 00:00:00 2001 From: c4live Date: Thu, 5 Jun 2014 16:01:38 +0200 Subject: [PATCH 10/10] Update FSPersistorManager.coffee Using code 'ENOENT' for error checking instead of errno 34. --- services/filestore/app/coffee/FSPersistorManager.coffee | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/services/filestore/app/coffee/FSPersistorManager.coffee b/services/filestore/app/coffee/FSPersistorManager.coffee index 992a9b25be..cbdad516d6 100644 --- a/services/filestore/app/coffee/FSPersistorManager.coffee +++ b/services/filestore/app/coffee/FSPersistorManager.coffee @@ -60,7 +60,7 @@ module.exports = filteredName = filterName name fs.rmdir "#{location}/#{filteredName}", (err) -> logger.err err:err, location:location, name:filteredName, "Error on rmdir." - if err and err.errno != 34 + if err and err.code != 'ENOENT' callback err else callback()