From fee6f3de0fe00a09ba6a13af55a8d533b8a28d82 Mon Sep 17 00:00:00 2001 From: Girish Ramakrishnan Date: Thu, 16 Jun 2016 06:38:47 -0700 Subject: [PATCH] configure/restoreInstalledApps must always succeed --- src/appdb.js | 2 +- src/apps.js | 16 ++++++++++------ src/test/apps-test.js | 2 +- 3 files changed, 12 insertions(+), 8 deletions(-) diff --git a/src/appdb.js b/src/appdb.js index 631e36d5f..46c242ce3 100644 --- a/src/appdb.js +++ b/src/appdb.js @@ -345,7 +345,7 @@ function setInstallationCommand(appId, installationState, values, callback) { updateWithConstraints(appId, values, '', callback); } else if (installationState === exports.ISTATE_PENDING_RESTORE) { updateWithConstraints(appId, values, 'AND (installationState = "installed" OR installationState = "error")', callback); - } else if (installationState === exports.ISTATE_PENDING_UPDATE || installationState === exports.ISTATE_PENDING_BACKUP) { + } else if (installationState === exports.ISTATE_PENDING_UPDATE || installationState === exports.ISTATE_PENDING_BACKUP || installationState === exports.ISTATE_PENDING_CONFIGURE) { updateWithConstraints(appId, values, 'AND installationState = "installed"', callback); } else if (installationState === exports.ISTATE_PENDING_CONFIGURE) { updateWithConstraints(appId, values, 'AND installationState = "installed" OR installationState = "pending_configure" OR installationState = "error"', callback); diff --git a/src/apps.js b/src/apps.js index b89833252..79b9024e9 100644 --- a/src/apps.js +++ b/src/apps.js @@ -931,11 +931,13 @@ function restoreInstalledApps(callback) { if (error) return callback(new AppsError(AppsError.INTERNAL_ERROR, error)); async.map(apps, function (app, iteratorDone) { - if (app.installationState !== appdb.ISTATE_INSTALLED) return iteratorDone(); - debug('marking %s for restore', app.location || app.id); - appdb.setInstallationCommand(app.id, appdb.ISTATE_PENDING_RESTORE, { oldConfig: null }, iteratorDone); + appdb.setInstallationCommand(app.id, appdb.ISTATE_PENDING_RESTORE, { oldConfig: null }, function (error) { + if (error) debug('did not mark %s for restore', app.location || app.id, error); + + iteratorDone(); // always succeed + }); }, callback); }); } @@ -947,11 +949,13 @@ function configureInstalledApps(callback) { if (error) return callback(new AppsError(AppsError.INTERNAL_ERROR, error)); async.map(apps, function (app, iteratorDone) { - if (app.installationState !== appdb.ISTATE_INSTALLED) return iteratorDone(); - debug('marking %s for reconfigure', app.location || app.id); - appdb.setInstallationCommand(app.id, appdb.ISTATE_PENDING_CONFIGURE, { oldConfig: null }, iteratorDone); + appdb.setInstallationCommand(app.id, appdb.ISTATE_PENDING_CONFIGURE, { oldConfig: null }, function (error) { + if (error) debug('did not mark %s for reconfigure', app.location || app.id, error); + + iteratorDone(); // always succeed + }); }, callback); }); } diff --git a/src/test/apps-test.js b/src/test/apps-test.js index fc3f1ea90..f4c64b739 100644 --- a/src/test/apps-test.js +++ b/src/test/apps-test.js @@ -369,7 +369,7 @@ describe('Apps', function () { apps.getAll(function (error, apps) { expect(apps[0].installationState).to.be(appdb.ISTATE_PENDING_RESTORE); expect(apps[0].oldConfig).to.be(null); - expect(apps[1].installationState).to.be(appdb.ISTATE_ERROR); + expect(apps[1].installationState).to.be(appdb.ISTATE_PENDING_RESTORE); expect(apps[2].installationState).to.be(appdb.ISTATE_PENDING_RESTORE); expect(apps[2].oldConfig).to.be(null);