diff options
author | Jon Bratseth <bratseth@oath.com> | 2018-10-18 13:50:42 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-10-18 13:50:42 +0200 |
commit | a10b26a6111b71e9ce15e4411fcf1b2459ca89b3 (patch) | |
tree | 4208121a88796b02a9553fd640802a251f9dde96 /configserver/src/main | |
parent | f63c1ed7f2f0196be3ccd593cf90104996e8a110 (diff) | |
parent | aa7233fc50ee01653fbf84bf0057c81fb387c4ad (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.java | 16 |
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, |