diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2021-05-27 15:20:02 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-05-27 15:20:02 +0200 |
commit | bba2924a61ace954a7d61a4bbb66f21a4cc062af (patch) | |
tree | a2f06299946934568664fbac9756d42e4f9ba6a9 | |
parent | 2cfd9a73adee4d2b6d3d446f19e61167e31bd043 (diff) | |
parent | 09f796ee4f1c8d180865ef616542bd545c66affa (diff) |
Merge pull request #18010 from vespa-engine/balder/log-instead-of-throw-on-redefinitions
Log instead of throwing on identical redefinition of rank-expressions.
-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..34ad912dd00 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 enforcement 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 (illegal and will be enforced soon) '" + expression.getFileName() + "'."); + } else { + throw new IllegalArgumentException("Rank expression file '" + name + + "' defined twice (illegal but not enforced), but redefinition 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); |