summaryrefslogtreecommitdiffstats
path: root/config-model
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2021-05-27 14:27:46 +0200
committerHenning Baldersheim <balder@yahoo-inc.com>2021-05-27 14:41:37 +0200
commit086fdef7a2172ee38b1f93269e3ea8ae7c9c1e05 (patch)
treec5002b21bb0313f2b43b14fc1929adce7b58e81f /config-model
parent469c7245b62be6f5ee114827cd0c69971e54609f (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.java18
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/RankProfile.java2
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);