Fix various app state issues

Tasks initiated by repair/uninstall can run from any state
Clear taskId for failed uninstall
Clone/install can only be run on new entries
This commit is contained in:
Girish Ramakrishnan
2019-09-23 17:23:38 -07:00
parent 24dcb1b79c
commit 70b9000b0e
2 changed files with 20 additions and 14 deletions

View File

@@ -238,8 +238,8 @@ function add(id, appStoreId, manifest, location, domain, portBindings, data, cal
const accessRestriction = data.accessRestriction || null;
const accessRestrictionJson = JSON.stringify(accessRestriction);
const memoryLimit = data.memoryLimit || 0;
const installationState = data.installationState || 'pending_install'; // FIXME
const runState = data.runState || 'running'; // FIXME
const installationState = data.installationState;
const runState = data.runState;
const sso = 'sso' in data ? data.sso : null;
const robotsTxt = 'robotsTxt' in data ? data.robotsTxt : null;
const debugModeJson = data.debugMode ? JSON.stringify(data.debugMode) : null;
@@ -454,15 +454,16 @@ function setHealth(appId, health, healthTime, callback) {
updateWithConstraints(appId, values, '', callback);
}
function setTask(appId, values, callback) {
function setTask(appId, values, requiredState, callback) {
assert.strictEqual(typeof appId, 'string');
assert.strictEqual(typeof values, 'object');
assert(requiredState === null || typeof requiredState === 'string');
assert.strictEqual(typeof callback, 'function');
if (values.installationState === 'pending_uninstall') { // FIXME
if (requiredState === null) {
updateWithConstraints(appId, values, 'AND taskId IS NULL', callback);
} else {
updateWithConstraints(appId, values, 'AND taskId IS NULL AND installationState != "error"', callback);
updateWithConstraints(appId, values, `AND taskId IS NULL AND installationState = "${requiredState}"`, callback);
}
}