diff --git a/src/backups.js b/src/backups.js index 529ad3a74..508570efe 100644 --- a/src/backups.js +++ b/src/backups.js @@ -402,7 +402,7 @@ function backup(auditSource, callback) { backupBoxAndApps(auditSource, function (error) { // start the backup operation in the background if (error) { debug('backup failed.', error); - mailer.backupFailed(JSON.stringify(error)); + mailer.backupFailed(error); } locker.unlock(locker.OP_FULL_BACKUP); diff --git a/src/mailer.js b/src/mailer.js index 8a493d74f..fce6a8ea9 100644 --- a/src/mailer.js +++ b/src/mailer.js @@ -56,6 +56,17 @@ var gMailQueue = [ ], gDnsReady = false, gCheckDnsTimerId = null; +function splatchError(error) { + var result = { }; + Object.getOwnPropertyNames(error).forEach(function (key) { + var value = this[key]; + if (value instanceof Error) value = splatchError(value); + result[key] = value; + }, error /* thisArg */); + + return util.inspect(result, { depth: null, showHidden: true }); +} + function start(callback) { assert.strictEqual(typeof callback, 'function'); @@ -426,7 +437,9 @@ function outOfDiskSpace(message) { }); } -function backupFailed(message) { +function backupFailed(error) { + var message = splatchError(error); + getAdminEmails(function (error, adminEmails) { if (error) return console.log('Error getting admins', error);