From 909c6bccb19d9d49a7a86aa13d8586f9794cfa73 Mon Sep 17 00:00:00 2001 From: Girish Ramakrishnan Date: Fri, 12 Mar 2021 10:10:49 -0800 Subject: [PATCH] error.code is a number which causes crash at times in BoxError (cherry picked from commit 1e96606110000d7d6e6f0cf52ef076197ca96a1e) --- src/storage/s3.js | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/storage/s3.js b/src/storage/s3.js index 6cb5ff032..24e9c81de 100644 --- a/src/storage/s3.js +++ b/src/storage/s3.js @@ -157,7 +157,7 @@ function exists(apiConfig, backupFilePath, callback) { s3.headObject(params, function (error) { if (!Object.keys(this.httpResponse.headers).some(h => h.startsWith('x-amz'))) return callback(new BoxError(BoxError.EXTERNAL_ERROR, 'not a s3 endpoint')); if (error && S3_NOT_FOUND(error)) return callback(null, false); - if (error) return callback(new BoxError(BoxError.EXTERNAL_ERROR, error.message || error.code)); + if (error) return callback(new BoxError(BoxError.EXTERNAL_ERROR, `Error headObject ${backupFilePath}. Message: ${error.message} HTTP Code: ${error.code}`)); callback(null, true); }); @@ -169,7 +169,7 @@ function exists(apiConfig, backupFilePath, callback) { }; s3.listObjects(listParams, function (error, listData) { - if (error) return callback(new BoxError(BoxError.EXTERNAL_ERROR, error.message || error.code)); + if (error) return callback(new BoxError(BoxError.EXTERNAL_ERROR, `Error listing objects ${backupFilePath}. Message: ${error.message} HTTP Code: ${error.code}`)); callback(null, listData.Contents.length !== 0); }); @@ -200,7 +200,7 @@ function download(apiConfig, backupFilePath, callback) { ps.emit('error', new BoxError(BoxError.NOT_FOUND, `Backup not found: ${backupFilePath}`)); } else { debug(`download: ${apiConfig.bucket}:${backupFilePath} s3 stream error.`, error); - ps.emit('error', new BoxError(BoxError.EXTERNAL_ERROR, error.message || error.code)); // DO sets 'code' + ps.emit('error', new BoxError(BoxError.EXTERNAL_ERROR, `Error multipartDownload ${backupFilePath}. Message: ${error.message} HTTP Code: ${error.code}`)); } }); @@ -231,7 +231,7 @@ function listDir(apiConfig, dir, batchSize, iteratorCallback, callback) { async.whilst((testDone) => testDone(null, !done), function listAndDownload(whilstCallback) { s3.listObjects(listParams, function (error, listData) { - if (error) return whilstCallback(new BoxError(BoxError.EXTERNAL_ERROR, error.message || error.code)); + if (error) return whilstCallback(new BoxError(BoxError.EXTERNAL_ERROR, `Error listing objects in ${dir}. Message: ${error.message} HTTP Code: ${error.code}`)); if (listData.Contents.length === 0) { done = true; return whilstCallback(); } @@ -505,7 +505,7 @@ function testConfig(apiConfig, callback) { var s3 = new AWS.S3(_.omit(credentials, 'retryDelayOptions', 'maxRetries')); s3.putObject(params, function (error) { - if (error) return callback(new BoxError(BoxError.EXTERNAL_ERROR, error.message || error.code)); // DO sets 'code' + if (error) return callback(new BoxError(BoxError.EXTERNAL_ERROR, `Error put object cloudron-testfile. Message: ${error.message} HTTP Code: ${error.code}`)); var params = { Bucket: apiConfig.bucket, @@ -513,7 +513,7 @@ function testConfig(apiConfig, callback) { }; s3.deleteObject(params, function (error) { - if (error) return callback(new BoxError(BoxError.EXTERNAL_ERROR, error.message || error.code)); // DO sets 'code' + if (error) return callback(new BoxError(BoxError.EXTERNAL_ERROR, `Error del object cloudron-testfile. Message: ${error.message} HTTP Code: ${error.code}`)); callback(); });