javascript - Node.js AWS S3 Upload Never Calls End Function -
i'm using this aws s3 npm package handle s3 uploads express server. i'm having issue uploader never calls end function.
var key = utils.createid(date.now()); var s3 = require('s3'); var client = s3.createclient({ maxasyncs3: 20, // default s3retrycount: 3, // default s3retrydelay: 1000, // default multipartuploadthreshold: 20971520, // default (20 mb) multipartuploadsize: 15728640, // default (15 mb) s3options: { accesskeyid: "actualkeyhere", secretaccesskey: "actualsecrethere", // other options passed new aws.s3() // see: http://docs.aws.amazon.com/awsjavascriptsdk/latest/aws/config.html#constructor-property }, }); var params = { localfile: req.file.path, s3params: { bucket: "actualbuckethere", key: key, // other options supported putobject, except body , contentlength. // see: http://docs.aws.amazon.com/awsjavascriptsdk/latest/aws/s3.html#putobject-property }, }; var uploader = client.uploadfile(params); console.log(key); uploader.on('error', function(err) { console.error("unable sync:", err.stack); }); uploader.on('progress', function() { console.log("progress", uploader.progressamount, uploader.progresstotal); }); uploader.on('end', function() { // **never gets called** console.log("done uploading"); });
i have replaced bucket name , aws keys other strings other same. console prints following code.
205d3e63ed92f6edbae59465b4769e5feb2560a7 progress 16384 93619 progress 32768 93619 progress 49152 93619 progress 65536 93619 progress 81920 93619 progress 93619 93619 progress 93619 93619 progress 16384 93619 progress 32768 93619 progress 49152 93619 progress 65536 93619 progress 81920 93619 progress 93619 93619 progress 93619 93619 progress 16384 93619 progress 32768 93619 progress 49152 93619 progress 65536 93619 progress 81920 93619 progress 93619 93619 progress 93619 93619 unable sync: requesttimeout: socket connection server not read or written within timeout period. idle connections closed. @ request.extracterror (/code/node_modules/s3/node_modules/aws-sdk/lib/services/s3.js:343:35) @ request.calllisteners (/code/node_modules/s3/node_modules/aws-sdk/lib/sequential_executor.js:100:18) @ request.emit (/code/node_modules/s3/node_modules/aws-sdk/lib/sequential_executor.js:77:10) @ request.emit (/code/node_modules/s3/node_modules/aws-sdk/lib/request.js:604:14) @ request.transition (/code/node_modules/s3/node_modules/aws-sdk/lib/request.js:21:12) @ acceptorstatemachine.runto (/code/node_modules/s3/node_modules/aws-sdk/lib/state_machine.js:14:12) @ /code/node_modules/s3/node_modules/aws-sdk/lib/state_machine.js:26:10 @ request.<anonymous> (/code/node_modules/s3/node_modules/aws-sdk/lib/request.js:22:9) @ request.<anonymous> (/code/node_modules/s3/node_modules/aws-sdk/lib/request.js:606:12) @ request.calllisteners (/code/node_modules/s3/node_modules/aws-sdk/lib/sequential_executor.js:104:18) @ request.emit (/code/node_modules/s3/node_modules/aws-sdk/lib/sequential_executor.js:77:10) @ request.emit (/code/node_modules/s3/node_modules/aws-sdk/lib/request.js:604:14) @ request.transition (/code/node_modules/s3/node_modules/aws-sdk/lib/request.js:21:12) @ acceptorstatemachine.runto (/code/node_modules/s3/node_modules/aws-sdk/lib/state_machine.js:14:12) @ /code/node_modules/s3/node_modules/aws-sdk/lib/state_machine.js:26:10 @ request.<anonymous> (/code/node_modules/s3/node_modules/aws-sdk/lib/request.js:22:9) @ request.<anonymous> (/code/node_modules/s3/node_modules/aws-sdk/lib/request.js:606:12) @ request.calllisteners (/code/node_modules/s3/node_modules/aws-sdk/lib/sequential_executor.js:104:18) @ callnextlistener (/code/node_modules/s3/node_modules/aws-sdk/lib/sequential_executor.js:90:14) @ incomingmessage.onend (/code/node_modules/s3/node_modules/aws-sdk/lib/event_listeners.js:183:11) @ emitnone (events.js:91:20) @ incomingmessage.emit (events.js:185:7)
so progress indicates has completed end function never gets called. ideas?
looking @ log messages appears retrying... timing out. makes me think failing md5 validation.
if @ https://www.npmjs.com/package/s3#clientuploadfileparams you'll see retries on md5 issues. if @ totals reported in logging you'll see hits total @ least 3 times matches retry count have set in client params.
that node module supports logging value uploader.progressmd5amount,
try adding logger. wonder if amounts report differently. , try checking contents of req.file.path
.
Comments
Post a Comment