diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2022-05-09 16:44:45 +0200 |
---|---|---|
committer | Henning Baldersheim <balder@yahoo-inc.com> | 2022-05-09 16:44:45 +0200 |
commit | 97d287e360fff66af6400ce217d668c16df8d16e (patch) | |
tree | bc30cc3beb5f2c49f9e1fd52714b913132a82600 /config-model/src/main/java/com | |
parent | a54a876d65a13de9042b2c993a252bc43b8a9e88 (diff) |
Make config generation deterministic by sorting the expressions by their unique name.
Diffstat (limited to 'config-model/src/main/java/com')
4 files changed, 13 insertions, 7 deletions
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/DistributableResource.java b/config-model/src/main/java/com/yahoo/searchdefinition/DistributableResource.java index e134b8f53ac..11c55521100 100644 --- a/config-model/src/main/java/com/yahoo/searchdefinition/DistributableResource.java +++ b/config-model/src/main/java/com/yahoo/searchdefinition/DistributableResource.java @@ -8,7 +8,7 @@ import com.yahoo.path.Path; import java.nio.ByteBuffer; import java.util.Objects; -public class DistributableResource { +public class DistributableResource implements Comparable <DistributableResource> { public enum PathType { FILE, URI, BLOB } @@ -87,4 +87,8 @@ public class DistributableResource { return "resource '" + name + " of type '" + pathType + "' with ref '" + fileReference + "'"; } + @Override + public int compareTo(DistributableResource o) { + return name.compareTo(o.getName()); + } } diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/LargeRankExpressions.java b/config-model/src/main/java/com/yahoo/searchdefinition/LargeRankExpressions.java index a1299c12307..41ed2cbe999 100644 --- a/config-model/src/main/java/com/yahoo/searchdefinition/LargeRankExpressions.java +++ b/config-model/src/main/java/com/yahoo/searchdefinition/LargeRankExpressions.java @@ -3,9 +3,10 @@ package com.yahoo.searchdefinition; import com.yahoo.config.application.api.FileRegistry; -import java.util.Collections; +import java.util.Collection; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; +import java.util.stream.Collectors; public class LargeRankExpressions { private final Map<String, RankExpressionBody> expressions = new ConcurrentHashMap<>(); @@ -36,9 +37,9 @@ public class LargeRankExpressions { } public int limit() { return limit; } - /** Returns a read-only map of the ranking constants in this indexed by name */ - public Map<String, RankExpressionBody> asMap() { - return Collections.unmodifiableMap(expressions); + /** Returns a read-only list of ranking constants ordered by name */ + public Collection<RankExpressionBody> expressions() { + return expressions.values().stream().sorted().collect(Collectors.toUnmodifiableList()); } } diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/derived/RankProfileList.java b/config-model/src/main/java/com/yahoo/searchdefinition/derived/RankProfileList.java index cd94b4a7f6e..4c9e65f16c8 100644 --- a/config-model/src/main/java/com/yahoo/searchdefinition/derived/RankProfileList.java +++ b/config-model/src/main/java/com/yahoo/searchdefinition/derived/RankProfileList.java @@ -153,7 +153,7 @@ public class RankProfileList extends Derived implements RankProfilesConfig.Produ } public void getConfig(RankingExpressionsConfig.Builder builder) { - largeRankExpressions.asMap().values().forEach((expr) -> builder.expression.add(new RankingExpressionsConfig.Expression.Builder().name(expr.getName()).fileref(expr.getFileReference()))); + largeRankExpressions.expressions().forEach((expr) -> builder.expression.add(new RankingExpressionsConfig.Expression.Builder().name(expr.getName()).fileref(expr.getFileReference()))); } public void getConfig(RankingConstantsConfig.Builder builder) { diff --git a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/RankSetupValidator.java b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/RankSetupValidator.java index ed943317a1f..b9b7f122d63 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/RankSetupValidator.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/RankSetupValidator.java @@ -153,8 +153,9 @@ public class RankSetupValidator extends Validator { // Assist verify-ranksetup in finding the actual ONNX model files writeExtraVerifyRankSetupConfig(config, db.getDerivedConfiguration().getSchema().onnxModels().asMap().values()); - writeExtraVerifyRankSetupConfig(config, db.getDerivedConfiguration().getSchema().rankExpressionFiles().asMap().values()); + writeExtraVerifyRankSetupConfig(config, db.getDerivedConfiguration().getSchema().rankExpressionFiles().expressions()); + config.sort(String::compareTo); String configContent = config.isEmpty() ? "" : StringUtilities.implodeMultiline(config); IOUtils.writeFile(dir + "verify-ranksetup.cfg", configContent, false); } |