summaryrefslogtreecommitdiffstats
path: root/configserver
diff options
context:
space:
mode:
authorMartin Polden <mpolden@mpolden.no>2020-12-11 16:38:55 +0100
committerMartin Polden <mpolden@mpolden.no>2020-12-11 16:38:55 +0100
commitf281eb7f20dbcd0283f32c3a44574141bd898097 (patch)
tree9915cec84088ea530e5eae352717832e5e77bb0b /configserver
parent148a7456c7788c07e512df4a1f9c714d2c37be5f (diff)
Set previous model in ActivatedModelsBuilder
Diffstat (limited to 'configserver')
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/modelfactory/ActivatedModelsBuilder.java15
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/session/SessionRepository.java1
2 files changed, 14 insertions, 2 deletions
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/modelfactory/ActivatedModelsBuilder.java b/configserver/src/main/java/com/yahoo/vespa/config/server/modelfactory/ActivatedModelsBuilder.java
index 9e104461b33..0a81c408ef4 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/modelfactory/ActivatedModelsBuilder.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/modelfactory/ActivatedModelsBuilder.java
@@ -5,6 +5,7 @@ import com.google.common.collect.ImmutableSet;
import com.yahoo.component.Version;
import com.yahoo.config.application.api.ApplicationPackage;
import com.yahoo.config.model.api.ConfigDefinitionRepo;
+import com.yahoo.config.model.api.Model;
import com.yahoo.config.model.api.ModelContext;
import com.yahoo.config.model.api.ModelFactory;
import com.yahoo.config.model.api.Provisioned;
@@ -18,6 +19,7 @@ import com.yahoo.vespa.config.server.GlobalComponentRegistry;
import com.yahoo.vespa.config.server.ServerCache;
import com.yahoo.vespa.config.server.application.Application;
import com.yahoo.vespa.config.server.application.ApplicationCuratorDatabase;
+import com.yahoo.vespa.config.server.application.ApplicationSet;
import com.yahoo.vespa.config.server.application.PermanentApplicationPackage;
import com.yahoo.vespa.config.server.deploy.ModelContextImpl;
import com.yahoo.vespa.config.server.monitoring.MetricUpdater;
@@ -33,6 +35,7 @@ import com.yahoo.vespa.config.server.tenant.TenantRepository;
import com.yahoo.vespa.curator.Curator;
import com.yahoo.vespa.flags.FlagSource;
+import java.util.Comparator;
import java.util.Map;
import java.util.Optional;
import java.util.logging.Level;
@@ -50,6 +53,7 @@ public class ActivatedModelsBuilder extends ModelsBuilder<Application> {
private final TenantName tenant;
private final long applicationGeneration;
private final SessionZooKeeperClient zkClient;
+ private final Optional<ApplicationSet> currentActiveApplicationSet;
private final PermanentApplicationPackage permanentApplicationPackage;
private final ConfigDefinitionRepo configDefinitionRepo;
private final Metrics metrics;
@@ -60,6 +64,7 @@ public class ActivatedModelsBuilder extends ModelsBuilder<Application> {
public ActivatedModelsBuilder(TenantName tenant,
long applicationGeneration,
SessionZooKeeperClient zkClient,
+ Optional<ApplicationSet> currentActiveApplicationSet,
GlobalComponentRegistry globalComponentRegistry) {
super(globalComponentRegistry.getModelFactoryRegistry(),
globalComponentRegistry.getConfigserverConfig(),
@@ -68,6 +73,7 @@ public class ActivatedModelsBuilder extends ModelsBuilder<Application> {
this.tenant = tenant;
this.applicationGeneration = applicationGeneration;
this.zkClient = zkClient;
+ this.currentActiveApplicationSet = currentActiveApplicationSet;
this.permanentApplicationPackage = globalComponentRegistry.getPermanentApplicationPackage();
this.configDefinitionRepo = globalComponentRegistry.getStaticConfigDefinitionRepo();
this.metrics = globalComponentRegistry.getMetrics();
@@ -90,7 +96,7 @@ public class ActivatedModelsBuilder extends ModelsBuilder<Application> {
Provisioned provisioned = new Provisioned();
ModelContext modelContext = new ModelContextImpl(
applicationPackage,
- Optional.empty(),
+ modelOf(modelFactory.version()),
permanentApplicationPackage.applicationPackage(),
new SilentDeployLogger(),
configDefinitionRepo,
@@ -115,13 +121,18 @@ public class ActivatedModelsBuilder extends ModelsBuilder<Application> {
applicationId);
}
+ private Optional<Model> modelOf(Version version) {
+ if (currentActiveApplicationSet.isEmpty()) return Optional.empty();
+ return currentActiveApplicationSet.get().get(version).map(Application::getModel);
+ }
+
private static <T> Optional<T> getForVersionOrLatest(Map<Version, T> map, Version version) {
if (map.isEmpty()) {
return Optional.empty();
}
T value = map.get(version);
if (value == null) {
- value = map.get(map.keySet().stream().max((a, b) -> a.compareTo(b)).get());
+ value = map.get(map.keySet().stream().max(Comparator.naturalOrder()).get());
}
return Optional.of(value);
}
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/session/SessionRepository.java b/configserver/src/main/java/com/yahoo/vespa/config/server/session/SessionRepository.java
index dfe4055d844..ec54abcedbc 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/session/SessionRepository.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/session/SessionRepository.java
@@ -419,6 +419,7 @@ public class SessionRepository {
ActivatedModelsBuilder builder = new ActivatedModelsBuilder(session.getTenantName(),
session.getSessionId(),
sessionZooKeeperClient,
+ getActiveApplicationSet(session.getApplicationId()),
componentRegistry);
// Read hosts allocated on the config server instance which created this
SettableOptional<AllocatedHosts> allocatedHosts = new SettableOptional<>(applicationPackage.getAllocatedHosts());