diff --git a/migrations/20160614021819-apps-drop-lastBackupConfigJson.js b/migrations/20160614021819-apps-drop-lastBackupConfigJson.js new file mode 100644 index 000000000..fc90796fd --- /dev/null +++ b/migrations/20160614021819-apps-drop-lastBackupConfigJson.js @@ -0,0 +1,16 @@ +dbm = dbm || require('db-migrate'); +var type = dbm.dataType; + +exports.up = function(db, callback) { + db.runSql('ALTER TABLE apps DROP COLUMN lastBackupConfigJson', function (error) { + if (error) console.error(error); + callback(error); + }); +}; + +exports.down = function(db, callback) { + db.runSql('ALTER TABLE apps ADD COLUMN lastBackupConfigJson TEXT', function (error) { + if (error) console.error(error); + callback(error); + }); +}; diff --git a/migrations/schema.sql b/migrations/schema.sql index 620923c0c..eb45d029c 100644 --- a/migrations/schema.sql +++ b/migrations/schema.sql @@ -68,10 +68,9 @@ CREATE TABLE IF NOT EXISTS apps( memoryLimit BIGINT DEFAULT 0, altDomain VARCHAR(256), - lastBackupId VARCHAR(128), - lastBackupConfigJson TEXT, // used for appstore and non-appstore installs. it's here so it's easy to do REST validation + lastBackupId VARCHAR(128), // tracks last valid backup, can be removed - oldConfigJson TEXT, // used to pass old config for apptask + oldConfigJson TEXT, // used to pass old config for apptask, can be removed when we use a queue PRIMARY KEY(id)); diff --git a/src/appdb.js b/src/appdb.js index 33a811240..fe54a5f52 100644 --- a/src/appdb.js +++ b/src/appdb.js @@ -58,7 +58,7 @@ var assert = require('assert'), var APPS_FIELDS_PREFIXED = [ 'apps.id', 'apps.appStoreId', 'apps.installationState', 'apps.installationProgress', 'apps.runState', 'apps.health', 'apps.containerId', 'apps.manifestJson', 'apps.httpPort', 'apps.location', 'apps.dnsRecordId', - 'apps.accessRestrictionJson', 'apps.lastBackupId', 'apps.lastBackupConfigJson', 'apps.oldConfigJson', 'apps.memoryLimit', 'apps.altDomain' ].join(','); + 'apps.accessRestrictionJson', 'apps.lastBackupId', 'apps.oldConfigJson', 'apps.memoryLimit', 'apps.altDomain' ].join(','); var PORT_BINDINGS_FIELDS = [ 'hostPort', 'environmentVariable', 'appId' ].join(','); @@ -69,10 +69,6 @@ function postProcess(result) { result.manifest = safe.JSON.parse(result.manifestJson); delete result.manifestJson; - assert(result.lastBackupConfigJson === null || typeof result.lastBackupConfigJson === 'string'); - result.lastBackupConfig = safe.JSON.parse(result.lastBackupConfigJson); - delete result.lastBackupConfigJson; - assert(result.oldConfigJson === null || typeof result.oldConfigJson === 'string'); result.oldConfig = safe.JSON.parse(result.oldConfigJson); delete result.oldConfigJson; @@ -284,9 +280,6 @@ function updateWithConstraints(id, app, constraints, callback) { if (p === 'manifest') { fields.push('manifestJson = ?'); values.push(JSON.stringify(app[p])); - } else if (p === 'lastBackupConfig') { - fields.push('lastBackupConfigJson = ?'); - values.push(JSON.stringify(app[p])); } else if (p === 'oldConfig') { fields.push('oldConfigJson = ?'); values.push(JSON.stringify(app[p])); diff --git a/src/backups.js b/src/backups.js index 7d4ac4cfb..477ae119c 100644 --- a/src/backups.js +++ b/src/backups.js @@ -338,13 +338,12 @@ function createNewAppBackup(app, addonsToBackup, callback) { }); } -function setRestorePoint(appId, lastBackupId, lastBackupConfig, callback) { +function setRestorePoint(appId, lastBackupId, callback) { assert.strictEqual(typeof appId, 'string'); assert.strictEqual(typeof lastBackupId, 'string'); - assert.strictEqual(typeof lastBackupConfig, 'object'); assert.strictEqual(typeof callback, 'function'); - appdb.update(appId, { lastBackupId: lastBackupId, lastBackupConfig: lastBackupConfig }, function (error) { + appdb.update(appId, { lastBackupId: lastBackupId }, function (error) { if (error && error.reason === DatabaseError.NOT_FOUND) return callback(new BackupsError(BackupsError.NOT_FOUND, 'No such app')); if (error) return callback(new BackupsError(BackupsError.INTERNAL_ERROR, error)); @@ -357,7 +356,7 @@ function backupApp(app, addonsToBackup, callback) { assert(!addonsToBackup || typeof addonsToBackup, 'object'); assert.strictEqual(typeof callback, 'function'); - var appConfig = null, backupFunction; + var backupFunction; if (!canBackupApp(app)) { if (!app.lastBackupId) { @@ -365,10 +364,9 @@ function backupApp(app, addonsToBackup, callback) { return callback(new BackupsError(BackupsError.BAD_STATE, 'App not healthy and never backed up previously')); } - appConfig = app.lastBackupConfig; backupFunction = reuseOldAppBackup.bind(null, app); } else { - appConfig = apps.getAppConfig(app); + var appConfig = apps.getAppConfig(app); backupFunction = createNewAppBackup.bind(null, app, addonsToBackup); if (!safe.fs.writeFileSync(path.join(paths.DATA_DIR, app.id + '/config.json'), JSON.stringify(appConfig), 'utf8')) { @@ -381,7 +379,7 @@ function backupApp(app, addonsToBackup, callback) { debugApp(app, 'backupApp: successful id:%s', backupId); - setRestorePoint(app.id, backupId, appConfig, function (error) { + setRestorePoint(app.id, backupId, function (error) { if (error) return callback(error); return callback(null, backupId); diff --git a/src/test/database-test.js b/src/test/database-test.js index 4b1bca23a..ffbe69170 100644 --- a/src/test/database-test.js +++ b/src/test/database-test.js @@ -551,7 +551,6 @@ describe('database', function () { health: null, accessRestriction: null, lastBackupId: null, - lastBackupConfig: null, oldConfig: null, memoryLimit: 4294967296, altDomain: null @@ -571,7 +570,6 @@ describe('database', function () { health: null, accessRestriction: { users: [ 'foobar' ] }, lastBackupId: null, - lastBackupConfig: null, oldConfig: null, memoryLimit: 0, altDomain: null diff --git a/src/test/ldap-test.js b/src/test/ldap-test.js index 19f982136..045360dbd 100644 --- a/src/test/ldap-test.js +++ b/src/test/ldap-test.js @@ -53,7 +53,6 @@ var APP_0 = { health: null, accessRestriction: null, lastBackupId: null, - lastBackupConfig: null, oldConfig: null, memoryLimit: 4294967296 };