diff --git a/src/appdb.js b/src/appdb.js index b841962e3..690f25845 100644 --- a/src/appdb.js +++ b/src/appdb.js @@ -104,9 +104,6 @@ function postProcess(result) { if (envNames[i]) result.env[envNames[i]] = envValues[i]; } - // in the db, we store dataDir as unique/nullable - result.dataDir = result.dataDir || ''; - result.error = safe.JSON.parse(result.errorJson); delete result.errorJson; diff --git a/src/apps.js b/src/apps.js index 73beeae18..77a52bfa2 100644 --- a/src/apps.js +++ b/src/apps.js @@ -406,6 +406,8 @@ function getDuplicateErrorDetails(errorMessage, location, domainObject, portBind } function getDataDir(app, dataDir) { + assert(dataDir === null || typeof dataDir === 'string'); + return dataDir || path.join(paths.APPS_DATA_DIR, app.id, 'data'); } diff --git a/src/apptask.js b/src/apptask.js index ba92a065a..c3eea559c 100644 --- a/src/apptask.js +++ b/src/apptask.js @@ -442,7 +442,7 @@ function waitForDnsPropagation(app, callback) { function moveDataDir(app, sourceDir, callback) { assert.strictEqual(typeof app, 'object'); - assert.strictEqual(typeof sourceDir, 'string'); + assert(sourceDir === null || typeof sourceDir === 'string'); assert.strictEqual(typeof callback, 'function'); let resolvedSourceDir = apps.getDataDir(app, sourceDir); @@ -697,12 +697,10 @@ function changeLocation(app, args, progressCallback, callback) { function migrateDataDir(app, oldDataDir, progressCallback, callback) { assert.strictEqual(typeof app, 'object'); - assert.strictEqual(typeof oldDataDir, 'string'); + assert(oldDataDir === null || typeof oldDataDir === 'string'); assert.strictEqual(typeof progressCallback, 'function'); assert.strictEqual(typeof callback, 'function'); - const dataDirChanged = oldDataDir !== app.dataDir; - async.series([ progressCallback.bind(null, { percent: 10, message: 'Cleaning up old install' }), stopApp.bind(null, app, progressCallback), @@ -717,6 +715,8 @@ function migrateDataDir(app, oldDataDir, progressCallback, callback) { // migrate dataDir function (next) { + const dataDirChanged = oldDataDir !== app.dataDir; + if (!dataDirChanged) return next(); moveDataDir(app, oldDataDir, next); diff --git a/src/test/database-test.js b/src/test/database-test.js index 1922b5897..511f0e3c7 100644 --- a/src/test/database-test.js +++ b/src/test/database-test.js @@ -412,7 +412,7 @@ describe('database', function () { env: {}, mailboxName: 'talktome', enableAutomaticUpdate: true, - dataDir: '', + dataDir: null, tags: [], label: null, taskId: null @@ -992,7 +992,7 @@ describe('database', function () { }, mailboxName: 'talktome', enableAutomaticUpdate: true, - dataDir: '', + dataDir: null, tags: [], label: null, taskId: null @@ -1021,7 +1021,7 @@ describe('database', function () { env: {}, mailboxName: 'callme', enableAutomaticUpdate: true, - dataDir: '', + dataDir: null, tags: [], label: null, taskId: null