summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHarald Musum <musum@verizonmedia.com>2020-03-13 11:17:41 +0100
committerGitHub <noreply@github.com>2020-03-13 11:17:41 +0100
commitca0319dbe15adcc1d1dc92bdcfc7626ebc6d11d8 (patch)
tree2a23d3019ef6e97379f909b9ced6626705c16ef6
parentc1171553c35d7414367777d5daed8a2b851d661e (diff)
parent7e63a481a108837843953029c6f94335672ac170 (diff)
Merge pull request #12556 from vespa-engine/hmusum/cleanup-RankSetupValidator
Cleanup rank setup validator
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/application/validation/RankSetupValidator.java46
1 files changed, 26 insertions, 20 deletions
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 7f8ff6edd85..b4246171277 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
@@ -33,24 +33,29 @@ import java.util.logging.Logger;
/**
* Validate rank setup for all search clusters (rank-profiles, index-schema, attributes configs), validating done
- * by running through the binary 'vespa-verify-ranksetup'
+ * by running the binary 'vespa-verify-ranksetup-bin'
*
* @author vegardh
*/
public class RankSetupValidator extends Validator {
private static final Logger log = Logger.getLogger(RankSetupValidator.class.getName());
- private final boolean force;
+ private static final String binaryName = "vespa-verify-ranksetup-bin ";
- public RankSetupValidator(boolean force) {
- this.force = force;
+ private final boolean ignoreValidationErrors;
+
+ public RankSetupValidator(boolean ignoreValidationErrors) {
+ this.ignoreValidationErrors = ignoreValidationErrors;
}
@Override
public void validate(VespaModel model, DeployState deployState) {
File cfgDir = null;
try {
- cfgDir = Files.createTempDirectory("deploy_ranksetup").toFile();
+ cfgDir = Files.createTempDirectory("verify-ranksetup." +
+ deployState.getProperties().applicationId().toFullString() +
+ ".")
+ .toFile();
for (AbstractSearchCluster cluster : model.getSearchClusters()) {
// Skipping rank expression checking for streaming clusters, not implemented yet
@@ -100,29 +105,29 @@ public class RankSetupValidator extends Validator {
IOUtils.recursiveDeleteDir(dir);
}
- private void writeConfigs(String dir, AbstractConfigProducer producer) throws IOException {
+ private void writeConfigs(String dir, AbstractConfigProducer<?> producer) throws IOException {
RankProfilesConfig.Builder rpcb = new RankProfilesConfig.Builder();
- RankProfilesConfig.Producer.class.cast(producer).getConfig(rpcb);
+ ((RankProfilesConfig.Producer) producer).getConfig(rpcb);
RankProfilesConfig rpc = new RankProfilesConfig(rpcb);
writeConfig(dir, RankProfilesConfig.getDefName() + ".cfg", rpc);
IndexschemaConfig.Builder iscb = new IndexschemaConfig.Builder();
- IndexschemaConfig.Producer.class.cast(producer).getConfig(iscb);
+ ((IndexschemaConfig.Producer) producer).getConfig(iscb);
IndexschemaConfig isc = new IndexschemaConfig(iscb);
writeConfig(dir, IndexschemaConfig.getDefName() + ".cfg", isc);
AttributesConfig.Builder acb = new AttributesConfig.Builder();
- AttributesConfig.Producer.class.cast(producer).getConfig(acb);
+ ((AttributesConfig.Producer) producer).getConfig(acb);
AttributesConfig ac = new AttributesConfig(acb);
writeConfig(dir, AttributesConfig.getDefName() + ".cfg", ac);
RankingConstantsConfig.Builder rccb = new RankingConstantsConfig.Builder();
- RankingConstantsConfig.Producer.class.cast(producer).getConfig(rccb);
+ ((RankingConstantsConfig.Producer) producer).getConfig(rccb);
RankingConstantsConfig rcc = new RankingConstantsConfig(rccb);
writeConfig(dir, RankingConstantsConfig.getDefName() + ".cfg", rcc);
ImportedFieldsConfig.Builder ifcb = new ImportedFieldsConfig.Builder();
- ImportedFieldsConfig.Producer.class.cast(producer).getConfig(ifcb);
+ ((ImportedFieldsConfig.Producer) producer).getConfig(ifcb);
ImportedFieldsConfig ifc = new ImportedFieldsConfig(ifcb);
writeConfig(dir, ImportedFieldsConfig.getDefName() + ".cfg", ifc);
}
@@ -132,7 +137,7 @@ public class RankSetupValidator extends Validator {
}
private boolean execValidate(String configId, SearchCluster sc, String sdName, DeployLogger deployLogger) {
- String job = "vespa-verify-ranksetup-bin " + configId;
+ String job = String.format("%s %s", binaryName, configId);
ProcessExecuter executer = new ProcessExecuter();
try {
Pair<Integer, String> ret = executer.exec(job);
@@ -147,27 +152,28 @@ public class RankSetupValidator extends Validator {
}
private void validateWarn(Exception e, DeployLogger deployLogger) {
- String msg = "Unable to execute 'vespa-verify-ranksetup', validation of rank expressions will only take place when you start Vespa: " +
+ String msg = "Unable to execute '"+ binaryName + "', validation of rank expressions will only take place when you start Vespa: " +
Exceptions.toMessageString(e);
deployLogger.log(LogLevel.WARNING, msg);
}
private void validateFail(String output, SearchCluster sc, String sdName, DeployLogger deployLogger) {
- String errMsg = "For search cluster '" + sc.getClusterName() + "', search definition '" + sdName + "': error in rank setup. Details:\n";
+ StringBuilder errMsg = new StringBuilder("For search cluster '").append(sc.getClusterName()).append("', ")
+ .append("search definition '").append(sdName).append("': error in rank setup. Details:\n");
for (String line : output.split("\n")) {
// Remove debug lines from start script
if (line.startsWith("debug\t")) continue;
try {
- LogMessage logmsg = LogMessage.parseNativeFormat(line);
- errMsg = errMsg + logmsg.getLevel() + ": " + logmsg.getPayload() + "\n";
+ LogMessage logMessage = LogMessage.parseNativeFormat(line);
+ errMsg.append(logMessage.getLevel()).append(": ").append(logMessage.getPayload()).append("\n");
} catch (InvalidLogFormatException e) {
- errMsg = errMsg + line + "\n";
+ errMsg.append(line).append("\n");
}
}
- if (force) {
- deployLogger.log(LogLevel.WARNING, errMsg + "(Continuing because of force.)");
+ if (ignoreValidationErrors) {
+ deployLogger.log(LogLevel.WARNING, errMsg.append("(Continuing since ignoreValidationErrors flag is set.)").toString());
} else {
- throw new IllegalArgumentException(errMsg);
+ throw new IllegalArgumentException(errMsg.toString());
}
}