summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/deployment/ApplicationStore.java9
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/InternalStepRunner.java3
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/JobController.java2
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/Maintainer.java2
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/deployment/InternalStepRunnerTest.java11
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/integration/ApplicationStoreMock.java12
6 files changed, 24 insertions, 15 deletions
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/deployment/ApplicationStore.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/deployment/ApplicationStore.java
index 426a3a17296..8bfe009677c 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/deployment/ApplicationStore.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/deployment/ApplicationStore.java
@@ -2,6 +2,7 @@
package com.yahoo.vespa.hosted.controller.api.integration.deployment;
import com.yahoo.config.provision.ApplicationId;
+import com.yahoo.config.provision.zone.ZoneId;
/**
* Store for the application and tester packages.
@@ -37,10 +38,10 @@ public interface ApplicationStore {
/** Removes all tester packages for the given tester. */
void removeAll(TesterId tester);
- /** Stores the given application package as the development package for the given application. */
- void putDev(ApplicationId application, byte[] applicationPackage);
+ /** Stores the given application package as the development package for the given application and zone. */
+ void putDev(ApplicationId application, ZoneId zone, byte[] applicationPackage);
- /** Returns the development package for the given application. */
- byte[] getDev(ApplicationId application);
+ /** Returns the development package for the given application and zone. */
+ byte[] getDev(ApplicationId application, ZoneId zone);
}
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/InternalStepRunner.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/InternalStepRunner.java
index 913773bb9fe..472a0c5fb7e 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/InternalStepRunner.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/InternalStepRunner.java
@@ -158,7 +158,8 @@ public class InternalStepRunner implements StepRunner {
private Optional<RunStatus> deployReal(RunId id, boolean setTheStage, Versions versions, DualLogger logger) {
Optional<ApplicationPackage> applicationPackage = id.type().environment().isManuallyDeployed()
- ? Optional.of(new ApplicationPackage(controller.applications().applicationStore().getDev(id.application())))
+ ? Optional.of(new ApplicationPackage(controller.applications().applicationStore()
+ .getDev(id.application(), id.type().zone(controller.system()))))
: Optional.empty();
Optional<Version> vespaVersion = id.type().environment().isManuallyDeployed()
? Optional.of(versions.targetPlatform())
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/JobController.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/JobController.java
index 915de1f9856..c154feb4abe 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/JobController.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/JobController.java
@@ -308,7 +308,7 @@ public class JobController {
last(id, type).filter(run -> ! run.hasEnded()).ifPresent(run -> abortAndWait(run.id()));
locked(id, type, __ -> {
- controller.applications().applicationStore().putDev(id, applicationPackage.zippedContent());
+ controller.applications().applicationStore().putDev(id, type.zone(controller.system()), applicationPackage.zippedContent());
start(id, type, new Versions(platform.orElse(controller.systemVersion()),
ApplicationVersion.unknown,
Optional.empty(),
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/Maintainer.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/Maintainer.java
index bd0c11d20f6..21fd0ec87d4 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/Maintainer.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/Maintainer.java
@@ -61,7 +61,7 @@ public abstract class Maintainer extends AbstractComponent implements Runnable {
@Override
public void run() {
try {
- if (!permittedSystems.contains(controller.system())) {
+ if ( ! permittedSystems.contains(controller.system())) {
return;
}
if (jobControl.isActive(name())) {
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/deployment/InternalStepRunnerTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/deployment/InternalStepRunnerTest.java
index 3105cb4143e..b53a7b39d61 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/deployment/InternalStepRunnerTest.java
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/deployment/InternalStepRunnerTest.java
@@ -19,6 +19,7 @@ import com.yahoo.vespa.hosted.controller.api.integration.deployment.JobType;
import com.yahoo.vespa.hosted.controller.api.integration.deployment.RunId;
import com.yahoo.vespa.hosted.controller.api.integration.deployment.TesterCloud;
import com.yahoo.vespa.hosted.controller.api.integration.stubs.MockMailer;
+import com.yahoo.vespa.hosted.controller.application.ApplicationPackage;
import org.junit.Before;
import org.junit.Test;
@@ -280,7 +281,7 @@ public class InternalStepRunnerTest {
@Test
public void deployToDev() {
ZoneId zone = JobType.devUsEast1.zone(tester.tester().controller().system());
- tester.jobs().deploy(appId, JobType.perfUsEast3, Optional.empty(), applicationPackage);
+ tester.jobs().deploy(appId, JobType.devUsEast1, Optional.empty(), applicationPackage);
tester.runner().run();
RunId id = tester.jobs().last(appId, JobType.devUsEast1).get().id();
assertEquals(unfinished, tester.jobs().run(id).get().steps().get(Step.installReal));
@@ -293,13 +294,17 @@ public class InternalStepRunnerTest {
tester.runner().run();
assertEquals(id.number() + 1, tester.jobs().last(appId, JobType.devUsEast1).get().id().number());
- tester.runner().run();
+ ApplicationPackage otherPackage = new ApplicationPackageBuilder().region("us-central-1").build();
+ tester.jobs().deploy(appId, JobType.perfUsEast3, Optional.empty(), otherPackage);
+
+ tester.runner().run(); // Job run order determined by JobType enum order per application.
tester.configServer().convergeServices(appId, zone);
assertEquals(unfinished, tester.jobs().run(id).get().steps().get(Step.installReal));
+ assertEquals(otherPackage.hash(), tester.configServer().application(appId).get().applicationPackage().hash());
tester.configServer().setVersion(appId, zone, version);
tester.runner().run();
- assertTrue(tester.jobs().active().isEmpty());
+ assertEquals(1, tester.jobs().active().size());
assertEquals(version, tester.tester().application(appId).deployments().get(zone).version());
try {
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/integration/ApplicationStoreMock.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/integration/ApplicationStoreMock.java
index cb307a731b0..f59f81e21f2 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/integration/ApplicationStoreMock.java
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/integration/ApplicationStoreMock.java
@@ -2,6 +2,7 @@
package com.yahoo.vespa.hosted.controller.integration;
import com.yahoo.config.provision.ApplicationId;
+import com.yahoo.config.provision.zone.ZoneId;
import com.yahoo.vespa.hosted.controller.api.integration.deployment.ApplicationStore;
import com.yahoo.vespa.hosted.controller.api.integration.deployment.ApplicationVersion;
import com.yahoo.vespa.hosted.controller.api.integration.deployment.TesterId;
@@ -20,7 +21,7 @@ import static org.junit.Assert.assertFalse;
public class ApplicationStoreMock implements ApplicationStore {
private final Map<ApplicationId, Map<ApplicationVersion, byte[]>> store = new ConcurrentHashMap<>();
- private final Map<ApplicationId, byte[]> devStore = new ConcurrentHashMap<>();
+ private final Map<ApplicationId, Map<ZoneId, byte[]>> devStore = new ConcurrentHashMap<>();
@Override
public byte[] get(ApplicationId application, ApplicationVersion applicationVersion) {
@@ -70,13 +71,14 @@ public class ApplicationStoreMock implements ApplicationStore {
}
@Override
- public void putDev(ApplicationId application, byte[] applicationPackage) {
- devStore.put(application, applicationPackage);
+ public void putDev(ApplicationId application, ZoneId zone, byte[] applicationPackage) {
+ devStore.putIfAbsent(application, new ConcurrentHashMap<>());
+ devStore.get(application).put(zone, applicationPackage);
}
@Override
- public byte[] getDev(ApplicationId application) {
- return requireNonNull(devStore.get(application));
+ public byte[] getDev(ApplicationId application, ZoneId zone) {
+ return requireNonNull(devStore.get(application).get(zone));
}
}