diff --git a/src/backups.js b/src/backups.js index d0db0aa19..54b914c72 100644 --- a/src/backups.js +++ b/src/backups.js @@ -944,9 +944,10 @@ function uploadBoxSnapshot(backupConfig, progressCallback, callback) { }); } -function rotateBoxBackup(backupConfig, tag, appBackupIds, progressCallback, callback) { +function rotateBoxBackup(backupConfig, tag, options, appBackupIds, progressCallback, callback) { assert.strictEqual(typeof backupConfig, 'object'); assert.strictEqual(typeof tag, 'string'); + assert.strictEqual(typeof object, 'object'); assert(Array.isArray(appBackupIds)); assert.strictEqual(typeof progressCallback, 'function'); assert.strictEqual(typeof callback, 'function'); @@ -977,7 +978,7 @@ function rotateBoxBackup(backupConfig, tag, appBackupIds, progressCallback, call copy.on('done', function (copyBackupError) { const state = copyBackupError ? exports.BACKUP_STATE_ERROR : exports.BACKUP_STATE_NORMAL; - backupdb.update(backupId, { state }, function (error) { + backupdb.update(backupId, { preserveSecs: options.preserveSecs || 0, state }, function (error) { if (copyBackupError) return callback(copyBackupError); if (error) return callback(error); @@ -989,9 +990,10 @@ function rotateBoxBackup(backupConfig, tag, appBackupIds, progressCallback, call }); } -function backupBoxWithAppBackupIds(appBackupIds, tag, progressCallback, callback) { +function backupBoxWithAppBackupIds(appBackupIds, tag, options, progressCallback, callback) { assert(Array.isArray(appBackupIds)); assert.strictEqual(typeof tag, 'string'); + assert.strictEqual(typeof options, 'object'); assert.strictEqual(typeof progressCallback, 'function'); assert.strictEqual(typeof callback, 'function'); @@ -1001,7 +1003,7 @@ function backupBoxWithAppBackupIds(appBackupIds, tag, progressCallback, callback uploadBoxSnapshot(backupConfig, progressCallback, function (error) { if (error) return callback(error); - rotateBoxBackup(backupConfig, tag, appBackupIds, progressCallback, callback); + rotateBoxBackup(backupConfig, tag, options, appBackupIds, progressCallback, callback); }); }); } @@ -1170,7 +1172,8 @@ function backupApp(app, options, progressCallback, callback) { } // this function expects you to have a lock. Unlike other progressCallback this also has a progress field -function backupBoxAndApps(progressCallback, callback) { +function backupBoxAndApps(options, progressCallback, callback) { + assert.strictEqual(typeof options, 'object'); assert.strictEqual(typeof progressCallback, 'function'); assert.strictEqual(typeof callback, 'function'); @@ -1192,7 +1195,7 @@ function backupBoxAndApps(progressCallback, callback) { } const startTime = new Date(); - backupAppWithTag(app, tag, { /* options */ }, (progress) => progressCallback({ percent: percent, message: progress.message }), function (error, backupId) { + backupAppWithTag(app, tag, options, (progress) => progressCallback({ percent: percent, message: progress.message }), function (error, backupId) { if (error) { debugApp(app, 'Unable to backup', error); return iteratorCallback(error); @@ -1210,7 +1213,7 @@ function backupBoxAndApps(progressCallback, callback) { progressCallback({ percent: percent, message: 'Backing up system data' }); percent += step; - backupBoxWithAppBackupIds(backupIds, tag, (progress) => progressCallback({ percent: percent, message: progress.message }), callback); + backupBoxWithAppBackupIds(backupIds, tag, options, (progress) => progressCallback({ percent: percent, message: progress.message }), callback); }); }); } @@ -1224,7 +1227,7 @@ function startBackupTask(auditSource, callback) { const memoryLimit = 'memoryLimit' in backupConfig ? Math.max(backupConfig.memoryLimit/1024/1024, 400) : 400; - tasks.add(tasks.TASK_BACKUP, [ ], function (error, taskId) { + tasks.add(tasks.TASK_BACKUP, [ { /* options */ } ], function (error, taskId) { if (error) return callback(error); eventlog.add(eventlog.ACTION_BACKUP_START, auditSource, { taskId }); diff --git a/src/updater.js b/src/updater.js index 6951c25a8..941903825 100644 --- a/src/updater.js +++ b/src/updater.js @@ -165,7 +165,7 @@ function update(boxUpdateInfo, options, progressCallback, callback) { progressCallback({ percent: 10, message: 'Backing up' }); - backups.backupBoxAndApps((progress) => progressCallback({ percent: 10+progress.percent*70/100, message: progress.message }), next); + backups.backupBoxAndApps({ preserveSecs: 3*7*24*60*60 }, (progress) => progressCallback({ percent: 10+progress.percent*70/100, message: progress.message }), next); } maybeBackup(function (error) {