diff --git a/src/routes/user/apps/appdata/AppDataRouter.ts b/src/routes/user/apps/appdata/AppDataRouter.ts index 7d5f876..b5a8b0f 100644 --- a/src/routes/user/apps/appdata/AppDataRouter.ts +++ b/src/routes/user/apps/appdata/AppDataRouter.ts @@ -1,11 +1,7 @@ import express = require('express') import BaseApi = require('../../../../api/BaseApi') import ApiStatusCodes = require('../../../../api/ApiStatusCodes') -import Logger = require('../../../../utils/Logger') import multer = require('multer') -import fs = require('fs-extra') -import DataStore = require('../../../../datastore/DataStore') -import ServiceManager = require('../../../../user/ServiceManager') import InjectionExtractor = require('../../../../injection/InjectionExtractor') const TEMP_UPLOAD = 'temp_upload/' diff --git a/src/user/ServiceManager.ts b/src/user/ServiceManager.ts index 54110ec..17624ce 100644 --- a/src/user/ServiceManager.ts +++ b/src/user/ServiceManager.ts @@ -397,6 +397,9 @@ class ServiceManager { const dataStore = this.dataStore return Promise.resolve() + .then(function() { + return self.ensureNotBuilding(appName) + }) .then(function() { Logger.d('Check if service is running: ' + serviceName) return dockerApi.isServiceRunningByName(serviceName) @@ -579,6 +582,14 @@ class ServiceManager { return requireFromString(preDeployFunction) } + ensureNotBuilding(appName: string) { + if (this.activeBuilds[appName]) + throw ApiStatusCodes.createError( + ApiStatusCodes.STATUS_ERROR_GENERIC, + `Build in-progress for ${appName}. Please wait` + ) + } + updateAppDefinition( appName: string, description: string, @@ -619,6 +630,9 @@ class ServiceManager { } return Promise.resolve() + .then(function() { + return self.ensureNotBuilding(appName) + }) .then(function() { return dataStore.getAppsDataStore().getAppDefinition(appName) })