aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJon Marius Venstad <jonmv@users.noreply.github.com>2018-09-10 12:29:48 +0200
committerGitHub <noreply@github.com>2018-09-10 12:29:48 +0200
commita7066e7028de1f35264bbfe164ba950ba5c6752f (patch)
tree662e193cf411521cee9d40ee5fc5b5d51ee977dd
parenta8c2f010943509327a2b2ae2b31aa879cb699e53 (diff)
parenta5b4e7b6634ebf28b8751339996730422a25e97d (diff)
Merge pull request #6825 from vespa-engine/jvenstad/never-upgrade-running-tester-containers
Keep session version also for tester containers, in dev.
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/ApplicationRepository.java11
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/ApplicationRepositoryTest.java24
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/ApplicationController.java1
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..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
@@ -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().isTester() // 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<ApplicationPackage> applicationPackageFromDeployer,
DeployOptions options) {