diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2021-05-27 14:27:46 +0200 |
---|---|---|
committer | Henning Baldersheim <balder@yahoo-inc.com> | 2021-05-27 14:41:37 +0200 |
commit | 086fdef7a2172ee38b1f93269e3ea8ae7c9c1e05 (patch) | |
tree | c5002b21bb0313f2b43b14fc1929adce7b58e81f /config-model | |
parent | 469c7245b62be6f5ee114827cd0c69971e54609f (diff) |
Log instead of throwing on identical redefinition of rank-expressions.
Redefinition to something else is still enforced.
Diffstat (limited to 'config-model')
-rw-r--r-- | config-model/src/main/java/com/yahoo/searchdefinition/RankExpressionFiles.java | 18 | ||||
-rw-r--r-- | config-model/src/main/java/com/yahoo/searchdefinition/RankProfile.java | 2 |
2 files changed, 16 insertions, 4 deletions
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/RankExpressionFiles.java b/config-model/src/main/java/com/yahoo/searchdefinition/RankExpressionFiles.java index ebc91e0693f..6531922f968 100644 --- a/config-model/src/main/java/com/yahoo/searchdefinition/RankExpressionFiles.java +++ b/config-model/src/main/java/com/yahoo/searchdefinition/RankExpressionFiles.java @@ -1,20 +1,32 @@ package com.yahoo.searchdefinition; +import com.yahoo.config.application.api.DeployLogger; import com.yahoo.vespa.model.AbstractService; import java.util.Collection; import java.util.Collections; import java.util.HashMap; import java.util.Map; +import java.util.logging.Level; public class RankExpressionFiles { private final Map<String, RankExpressionFile> expressions = new HashMap<>(); - public void add(RankExpressionFile expression) { + //TODO Deploy logger should not be necessary, as redefinition is illegal, but legacy prevents enforment starting now. + public void add(RankExpressionFile expression, DeployLogger deployLogger) { expression.validate(); String name = expression.getName(); - if (expressions.containsKey(name)) - throw new IllegalArgumentException("Rank expression file '" + name + "' defined twice"); + if (expressions.containsKey(name)) { + if ( expressions.get(name).getFileName().equals(expression.getFileName()) ) { + //TODO Throw instead, No later than Vespa 8 + deployLogger.logApplicationPackage(Level.WARNING, "Rank expression file '" + name + + "' defined twice with identical expression '" + expression.getFileName() + "'."); + } else { + throw new IllegalArgumentException("Rank expression file '" + name + + "' defined twice (illegal but not enforced), but redefining is not matching (illegal and enforced)" + + "previous = '" + expressions.get(name).getFileName() + "', new = '" + expression.getFileName() + "'."); + } + } expressions.put(name, expression); } diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/RankProfile.java b/config-model/src/main/java/com/yahoo/searchdefinition/RankProfile.java index 97b537066ee..eec5d4617d0 100644 --- a/config-model/src/main/java/com/yahoo/searchdefinition/RankProfile.java +++ b/config-model/src/main/java/com/yahoo/searchdefinition/RankProfile.java @@ -722,7 +722,7 @@ public class RankProfile implements Cloneable { "' in subdirectory, which is not supported."); if (search.getDeployProperties().featureFlags().distributeExternalRankExpressions()) { - rankExpressionFiles().add(new RankExpressionFile(getUniqueExpressionName(expName), fileName)); + rankExpressionFiles().add(new RankExpressionFile(getUniqueExpressionName(expName), fileName), search.getDeployLogger()); externalFileExpressions.add(expName); } return search.getRankingExpression(fileName); |