From 2fa6e7bf394d85aad43629742dcb1fb328172202 Mon Sep 17 00:00:00 2001 From: Jon Marius Venstad Date: Thu, 6 Sep 2018 09:26:19 +0200 Subject: Keep session version also for tester containers, in dev. --- .../vespa/config/server/ApplicationRepository.java | 11 +++++----- .../config/server/ApplicationRepositoryTest.java | 24 ++++++++++++++-------- .../hosted/controller/ApplicationController.java | 1 + 3 files changed, 22 insertions(+), 14 deletions(-) diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/ApplicationRepository.java b/configserver/src/main/java/com/yahoo/vespa/config/server/ApplicationRepository.java index a8b4844ca43..053a36dfe75 100644 --- a/configserver/src/main/java/com/yahoo/vespa/config/server/ApplicationRepository.java +++ b/configserver/src/main/java/com/yahoo/vespa/config/server/ApplicationRepository.java @@ -691,13 +691,14 @@ public class ApplicationRepository implements com.yahoo.config.provision.Deploye } /** Returns version to use when deploying application in given environment */ - static Version decideVersion(ApplicationId application, Environment environment, Version targetVersion, boolean bootstrap) { - if (environment.isManuallyDeployed() && - !"hosted-vespa".equals(application.tenant().value()) && // Never change version of system applications - !bootstrap) { // Do not use current version when bootstrapping config server + static Version decideVersion(ApplicationId application, Environment environment, Version sessionVersion, boolean bootstrap) { + if ( environment.isManuallyDeployed() + && ! "hosted-vespa".equals(application.tenant().value()) // Never change version of system applications + && ! application.instance().value().endsWith("-t") // Never upgrade tester containers + && ! bootstrap) { // Do not use current version when bootstrapping config server return Vtag.currentVersion; } - return targetVersion; + return sessionVersion; } public Slime createDeployLog() { diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/ApplicationRepositoryTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/ApplicationRepositoryTest.java index d9a653a1dc2..a5e76262f48 100644 --- a/configserver/src/test/java/com/yahoo/vespa/config/server/ApplicationRepositoryTest.java +++ b/configserver/src/test/java/com/yahoo/vespa/config/server/ApplicationRepositoryTest.java @@ -135,19 +135,25 @@ public class ApplicationRepositoryTest { public void decideVersion() { ApplicationId regularApp = ApplicationId.from("tenant1", "application1", "default"); ApplicationId systemApp = ApplicationId.from("hosted-vespa", "routing", "default"); - Version targetVersion = Version.fromString("5.0"); + ApplicationId testerApp = ApplicationId.from("tenant1", "application1", "default-t"); + Version sessionVersion = Version.fromString("5.0"); - // Always use target for system application - assertEquals(targetVersion, ApplicationRepository.decideVersion(systemApp, Environment.prod, targetVersion, false)); - assertEquals(targetVersion, ApplicationRepository.decideVersion(systemApp, Environment.dev, targetVersion, false)); - assertEquals(targetVersion, ApplicationRepository.decideVersion(systemApp, Environment.perf, targetVersion, false)); + // Always use session version for system application + assertEquals(sessionVersion, ApplicationRepository.decideVersion(systemApp, Environment.prod, sessionVersion, false)); + assertEquals(sessionVersion, ApplicationRepository.decideVersion(systemApp, Environment.dev, sessionVersion, false)); + assertEquals(sessionVersion, ApplicationRepository.decideVersion(systemApp, Environment.perf, sessionVersion, false)); + + // Always use session version for tester application + assertEquals(sessionVersion, ApplicationRepository.decideVersion(testerApp, Environment.prod, sessionVersion, false)); + assertEquals(sessionVersion, ApplicationRepository.decideVersion(testerApp, Environment.dev, sessionVersion, false)); + assertEquals(sessionVersion, ApplicationRepository.decideVersion(testerApp, Environment.perf, sessionVersion, false)); // Target for regular application depends on environment - assertEquals(targetVersion, ApplicationRepository.decideVersion(regularApp, Environment.prod, targetVersion, false)); - assertEquals(Vtag.currentVersion, ApplicationRepository.decideVersion(regularApp, Environment.dev, targetVersion, false)); + assertEquals(sessionVersion, ApplicationRepository.decideVersion(regularApp, Environment.prod, sessionVersion, false)); + assertEquals(Vtag.currentVersion, ApplicationRepository.decideVersion(regularApp, Environment.dev, sessionVersion, false)); // If bootstrap, version should be target version - assertEquals(targetVersion, ApplicationRepository.decideVersion(regularApp, Environment.dev, targetVersion, true)); - assertEquals(Vtag.currentVersion, ApplicationRepository.decideVersion(regularApp, Environment.perf, targetVersion, false)); + assertEquals(sessionVersion, ApplicationRepository.decideVersion(regularApp, Environment.dev, sessionVersion, true)); + assertEquals(Vtag.currentVersion, ApplicationRepository.decideVersion(regularApp, Environment.perf, sessionVersion, false)); } @Test diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/ApplicationController.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/ApplicationController.java index a2aab587466..a3a4e99c38d 100644 --- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/ApplicationController.java +++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/ApplicationController.java @@ -278,6 +278,7 @@ public class ApplicationController { /** Deploys an application. If the application does not exist it is created. */ // TODO: Get rid of the options arg + // TODO jvenstad: Split this, and choose between deployDirectly and deploy in handler, excluding internally built from the latter. public ActivateResult deploy(ApplicationId applicationId, ZoneId zone, Optional applicationPackageFromDeployer, DeployOptions options) { -- cgit v1.2.3 From a5b4e7b6634ebf28b8751339996730422a25e97d Mon Sep 17 00:00:00 2001 From: Jon Marius Venstad Date: Mon, 10 Sep 2018 11:18:40 +0200 Subject: Use isTester in InstanceName, rather than regex on its value --- .../main/java/com/yahoo/vespa/config/server/ApplicationRepository.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/ApplicationRepository.java b/configserver/src/main/java/com/yahoo/vespa/config/server/ApplicationRepository.java index 053a36dfe75..79a8a3d8763 100644 --- a/configserver/src/main/java/com/yahoo/vespa/config/server/ApplicationRepository.java +++ b/configserver/src/main/java/com/yahoo/vespa/config/server/ApplicationRepository.java @@ -694,7 +694,7 @@ public class ApplicationRepository implements com.yahoo.config.provision.Deploye static Version decideVersion(ApplicationId application, Environment environment, Version sessionVersion, boolean bootstrap) { if ( environment.isManuallyDeployed() && ! "hosted-vespa".equals(application.tenant().value()) // Never change version of system applications - && ! application.instance().value().endsWith("-t") // Never upgrade tester containers + && ! application.instance().isTester() // Never upgrade tester containers && ! bootstrap) { // Do not use current version when bootstrapping config server return Vtag.currentVersion; } -- cgit v1.2.3