diff options
author | Arne H Juul <arnej@yahooinc.com> | 2021-10-21 07:53:20 +0000 |
---|---|---|
committer | Arne H Juul <arnej@yahooinc.com> | 2021-10-21 07:53:20 +0000 |
commit | b764ec9a3e44d28a75fc0f748039a8326ff0617c (patch) | |
tree | 83c91cf6d03c055a40d561725a083ca87f8c2d63 | |
parent | 95bc5d408d9e8ff1383373d61ff69a0682535bcc (diff) |
add permanent feature flag: forward-issues-as-errors
4 files changed, 19 insertions, 5 deletions
diff --git a/config-model-api/src/main/java/com/yahoo/config/model/api/ModelContext.java b/config-model-api/src/main/java/com/yahoo/config/model/api/ModelContext.java index 921bf44d315..de8fa05f540 100644 --- a/config-model-api/src/main/java/com/yahoo/config/model/api/ModelContext.java +++ b/config-model-api/src/main/java/com/yahoo/config/model/api/ModelContext.java @@ -101,6 +101,7 @@ public interface ModelContext { @ModelFeatureFlag(owners = {"bjorncs"}) default int maxConnectionLifeInHosted() { return 45; } @ModelFeatureFlag(owners = {"geirst", "vekterli"}) default int distributorMergeBusyWait() { return 10; } @ModelFeatureFlag(owners = {"vekterli", "geirst"}) default boolean distributorEnhancedMaintenanceScheduling() { return false; } + @ModelFeatureFlag(owners = {"arnej"}) default boolean forwardIssuesAsErrors() { return true; } } /** Warning: As elsewhere in this package, do not make backwards incompatible changes that will break old config models! */ diff --git a/config-model/src/main/java/com/yahoo/vespa/model/content/ContentSearchCluster.java b/config-model/src/main/java/com/yahoo/vespa/model/content/ContentSearchCluster.java index 1200b7467b4..ff9db4a10bf 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/content/ContentSearchCluster.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/content/ContentSearchCluster.java @@ -68,6 +68,7 @@ public class ContentSearchCluster extends AbstractConfigProducer<SearchCluster> private final double defaultFeedConcurrency; private final double defaultDiskBloatFactor; private final int defaultDocStoreCompressionLevel; + private final boolean forwardIssuesToQrs; /** Whether the nodes of this cluster also hosts a container cluster in a hosted system */ private final boolean combined; @@ -210,11 +211,12 @@ public class ContentSearchCluster extends AbstractConfigProducer<SearchCluster> this.syncTransactionLog = syncTransactionLog; this.combined = combined; - feedSequencerType = convertFeedSequencerType(featureFlags.feedSequencerType()); - feedTaskLimit = featureFlags.feedTaskLimit(); - defaultFeedConcurrency = featureFlags.feedConcurrency(); - defaultDocStoreCompressionLevel = featureFlags.docstoreCompressionLevel(); - defaultDiskBloatFactor = featureFlags.diskBloatFactor(); + this.feedSequencerType = convertFeedSequencerType(featureFlags.feedSequencerType()); + this.feedTaskLimit = featureFlags.feedTaskLimit(); + this.defaultFeedConcurrency = featureFlags.feedConcurrency(); + this.defaultDiskBloatFactor = featureFlags.diskBloatFactor(); + this.defaultDocStoreCompressionLevel = featureFlags.docstoreCompressionLevel(); + this.forwardIssuesToQrs = featureFlags.forwardIssuesAsErrors(); } public void setVisibilityDelay(double delay) { @@ -411,6 +413,7 @@ public class ContentSearchCluster extends AbstractConfigProducer<SearchCluster> builder.flush.memory.each.diskbloatfactor(defaultDiskBloatFactor); builder.summary.log.chunk.compression.level(defaultDocStoreCompressionLevel); builder.summary.log.compact.compression.level(defaultDocStoreCompressionLevel); + builder.forward_issues(forwardIssuesToQrs); int numDocumentDbs = builder.documentdb.size(); builder.initialize(new ProtonConfig.Initialize.Builder().threads(numDocumentDbs + 1)); diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/deploy/ModelContextImpl.java b/configserver/src/main/java/com/yahoo/vespa/config/server/deploy/ModelContextImpl.java index c299abcfb7c..89eb77f2250 100644 --- a/configserver/src/main/java/com/yahoo/vespa/config/server/deploy/ModelContextImpl.java +++ b/configserver/src/main/java/com/yahoo/vespa/config/server/deploy/ModelContextImpl.java @@ -196,6 +196,7 @@ public class ModelContextImpl implements ModelContext { private final int docstoreCompressionLevel; private final double diskBloatFactor; private final boolean distributorEnhancedMaintenanceScheduling; + private final boolean forwardIssuesAsErrors; public FeatureFlags(FlagSource source, ApplicationId appId) { this.defaultTermwiseLimit = flagValue(source, appId, Flags.DEFAULT_TERM_WISE_LIMIT); @@ -230,6 +231,7 @@ public class ModelContextImpl implements ModelContext { this.docstoreCompressionLevel = flagValue(source, appId, Flags.DOCSTORE_COMPRESSION_LEVEL); this.diskBloatFactor = flagValue(source, appId, Flags.DISK_BLOAT_FACTOR); this.distributorEnhancedMaintenanceScheduling = flagValue(source, appId, Flags.DISTRIBUTOR_ENHANCED_MAINTENANCE_SCHEDULING); + this.forwardIssuesAsErrors = flagValue(source, appId, PermanentFlags.FORWARD_ISSUES_AS_ERRORS); } @Override public double defaultTermwiseLimit() { return defaultTermwiseLimit; } @@ -266,6 +268,7 @@ public class ModelContextImpl implements ModelContext { @Override public double diskBloatFactor() { return diskBloatFactor; } @Override public int docstoreCompressionLevel() { return docstoreCompressionLevel; } @Override public boolean distributorEnhancedMaintenanceScheduling() { return distributorEnhancedMaintenanceScheduling; } + @Override public boolean forwardIssuesAsErrors() { return forwardIssuesAsErrors; } private static <V> V flagValue(FlagSource source, ApplicationId appId, UnboundFlag<? extends V, ?, ?> flag) { return flag.bindTo(source) diff --git a/flags/src/main/java/com/yahoo/vespa/flags/PermanentFlags.java b/flags/src/main/java/com/yahoo/vespa/flags/PermanentFlags.java index ae5317ecb53..2c0614805a9 100644 --- a/flags/src/main/java/com/yahoo/vespa/flags/PermanentFlags.java +++ b/flags/src/main/java/com/yahoo/vespa/flags/PermanentFlags.java @@ -212,6 +212,13 @@ public class PermanentFlags { ZONE_ID ); + public static final UnboundBooleanFlag FORWARD_ISSUES_AS_ERRORS = defineFeatureFlag( + "forward-issues-as-errors", true, + "When the backend detects a problematic issue with a query, it will by default send it as an error message to the QRS, which adds it in an ErrorHit in the result. May be disabled using this flag.", + "Takes effect immediately", + ZONE_ID, APPLICATION_ID); + + private PermanentFlags() {} private static UnboundBooleanFlag defineFeatureFlag( |