aboutsummaryrefslogtreecommitdiffstats
path: root/configserver/src/main
diff options
context:
space:
mode:
authorJon Bratseth <bratseth@oath.com>2018-10-18 13:50:42 +0200
committerGitHub <noreply@github.com>2018-10-18 13:50:42 +0200
commita10b26a6111b71e9ce15e4411fcf1b2459ca89b3 (patch)
tree4208121a88796b02a9553fd640802a251f9dde96 /configserver/src/main
parentf63c1ed7f2f0196be3ccd593cf90104996e8a110 (diff)
parentaa7233fc50ee01653fbf84bf0057c81fb387c4ad (diff)
Merge pull request #7349 from vespa-engine/musum/limit-number-of-config-models-build-when-adding-node
Musum/limit number of config models build when adding node
Diffstat (limited to 'configserver/src/main')
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/modelfactory/ModelsBuilder.java16
1 files changed, 7 insertions, 9 deletions
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/modelfactory/ModelsBuilder.java b/configserver/src/main/java/com/yahoo/vespa/config/server/modelfactory/ModelsBuilder.java
index 27343e71a87..24309569c9d 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/modelfactory/ModelsBuilder.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/modelfactory/ModelsBuilder.java
@@ -148,7 +148,7 @@ public abstract class ModelsBuilder<MODELRESULT extends ModelResult> {
return allApplicationVersions;
// load old model versions
- versions = versionsToBuild(versions, wantedNodeVespaVersion, allocatedHosts.get());
+ versions = versionsToBuild(versions, wantedNodeVespaVersion, latest.getMajor(), allocatedHosts.get());
// TODO: We use the allocated hosts from the newest version when building older model versions.
// This is correct except for the case where an old model specifies a cluster which the new version
// does not. In that case we really want to extend the set of allocated hosts to include those of that
@@ -169,16 +169,14 @@ public abstract class ModelsBuilder<MODELRESULT extends ModelResult> {
return allApplicationVersions;
}
- private Set<Version> versionsToBuild(Set<Version> versions, com.yahoo.component.Version wantedVersion, AllocatedHosts allocatedHosts) {
+ private Set<Version> versionsToBuild(Set<Version> versions, com.yahoo.component.Version wantedVersion, int majorVersion, AllocatedHosts allocatedHosts) {
if (configserverConfig.buildMinimalSetOfConfigModels())
versions = keepThoseUsedOn(allocatedHosts, versions);
// Make sure we build wanted version if we are building models for this major version and we are on hosted vespa
// If not on hosted vespa, we do not want to try to build this version, since we have only one version (the latest)
- // Also handle the case where there are no allocated hosts in the zone, so versions is empty
- Version wanted = Version.fromIntValues(wantedVersion.getMajor(), wantedVersion.getMinor(), wantedVersion.getMicro());
- if (hosted && (versions.isEmpty() || wantedVersion.getMajor() == findLatest(versions).getMajor()))
- versions.add(wanted);
+ if (hosted && wantedVersion.getMajor() == majorVersion)
+ versions.add(Version.fromIntValues(wantedVersion.getMajor(), wantedVersion.getMinor(), wantedVersion.getMicro()));
return versions;
}
@@ -198,13 +196,13 @@ public abstract class ModelsBuilder<MODELRESULT extends ModelResult> {
/** Returns the subset of the given versions which are in use on these hosts */
private Set<Version> keepThoseUsedOn(AllocatedHosts hosts, Set<Version> versions) {
- return versions.stream().filter(version -> mayBeUsedOn(hosts, version)).collect(Collectors.toSet());
+ return versions.stream().filter(version -> isUsedOn(hosts, version)).collect(Collectors.toSet());
}
- private boolean mayBeUsedOn(AllocatedHosts hosts, Version version) {
+ private boolean isUsedOn(AllocatedHosts hosts, Version version) {
com.yahoo.component.Version v = new com.yahoo.component.Version(version.toString());
return hosts.getHosts().stream()
- .anyMatch(host -> ! host.version().isPresent() || host.version().get().equals(v));
+ .anyMatch(host -> host.version().isPresent() && host.version().get().equals(v));
}
protected abstract MODELRESULT buildModelVersion(ModelFactory modelFactory, ApplicationPackage applicationPackage,