diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2023-12-06 10:42:48 +0100 |
---|---|---|
committer | Henning Baldersheim <balder@yahoo-inc.com> | 2023-12-06 10:42:48 +0100 |
commit | ff4825c7d9c1e367ebd561fb83872ea757c5592c (patch) | |
tree | 41af906c33f27d143d18b5814c225b73f6168ec6 | |
parent | 0754f11f6bb14b209e7739c5c1af44f23bc67743 (diff) |
Add use-estimate-for-fetch-postings feature flag
4 files changed, 16 insertions, 0 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 cb394054510..f34f63a0cfc 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 @@ -117,6 +117,7 @@ public interface ModelContext { @ModelFeatureFlag(owners = {"vekterli"}) default boolean usePerDocumentThrottledDeleteBucket() { return false; } @ModelFeatureFlag(owners = {"baldersheim"}) default boolean alwaysMarkPhraseExpensive() { return false; } @ModelFeatureFlag(owners = {"baldersheim"}) default boolean createPostinglistWhenNonStrict() { return true; } + @ModelFeatureFlag(owners = {"baldersheim"}) default boolean useEstimateForFetchPostings() { return false; } } /** 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/schema/derived/RawRankProfile.java b/config-model/src/main/java/com/yahoo/schema/derived/RawRankProfile.java index 411e754f3ef..8090344ea8c 100644 --- a/config-model/src/main/java/com/yahoo/schema/derived/RawRankProfile.java +++ b/config-model/src/main/java/com/yahoo/schema/derived/RawRankProfile.java @@ -172,6 +172,7 @@ public class RawRankProfile implements RankProfilesConfig.Producer { private final double rankScoreDropLimit; private final boolean alwaysMarkPhraseExpensive; private final boolean createPostinglistWhenNonStrict; + private final boolean useEstimateForFetchPostings; /** * The rank type definitions used to derive settings for the native rank features @@ -215,6 +216,7 @@ public class RawRankProfile implements RankProfilesConfig.Producer { termwiseLimit = compiled.getTermwiseLimit().orElse(deployProperties.featureFlags().defaultTermwiseLimit()); alwaysMarkPhraseExpensive = deployProperties.featureFlags().alwaysMarkPhraseExpensive(); createPostinglistWhenNonStrict = deployProperties.featureFlags().createPostinglistWhenNonStrict(); + useEstimateForFetchPostings = deployProperties.featureFlags().useEstimateForFetchPostings(); postFilterThreshold = compiled.getPostFilterThreshold(); approximateThreshold = compiled.getApproximateThreshold(); targetHitsMaxAdjustmentFactor = compiled.getTargetHitsMaxAdjustmentFactor(); @@ -471,6 +473,9 @@ public class RawRankProfile implements RankProfilesConfig.Producer { if ( ! createPostinglistWhenNonStrict) { properties.add(new Pair<>("vespa.matching.create_postinglist_when_non_strict", String.valueOf(createPostinglistWhenNonStrict))); } + if (useEstimateForFetchPostings) { + properties.add(new Pair<>("vespa.matching.use_estimate_for_fetch_postings", String.valueOf(useEstimateForFetchPostings))); + } if (postFilterThreshold.isPresent()) { properties.add(new Pair<>("vespa.matching.global_filter.upper_limit", String.valueOf(postFilterThreshold.getAsDouble()))); } 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 27c24c5d6ed..2f126cd84d3 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 @@ -203,6 +203,7 @@ public class ModelContextImpl implements ModelContext { private final String summaryDecodePolicy; private final boolean alwaysMarkPhraseExpensive; private final boolean createPostinglistWhenNonStrict; + private final boolean useEstimateForFetchPostings; private final int contentLayerMetadataFeatureLevel; private final boolean dynamicHeapSize; private final String unknownConfigDefinition; @@ -254,6 +255,7 @@ public class ModelContextImpl implements ModelContext { this.usePerDocumentThrottledDeleteBucket = flagValue(source, appId, version, Flags.USE_PER_DOCUMENT_THROTTLED_DELETE_BUCKET); this.alwaysMarkPhraseExpensive = flagValue(source, appId, version, Flags.ALWAYS_MARK_PHRASE_EXPENSIVE); this.createPostinglistWhenNonStrict = flagValue(source, appId, version, Flags.CREATE_POSTINGLIST_WHEN_NON_STRICT); + this.useEstimateForFetchPostings = flagValue(source, appId, version, Flags.USE_ESTIMATE_FOR_FETCH_POSTINGS); } @Override public int heapSizePercentage() { return heapPercentage; } @@ -301,6 +303,7 @@ public class ModelContextImpl implements ModelContext { } @Override public boolean alwaysMarkPhraseExpensive() { return alwaysMarkPhraseExpensive; } @Override public boolean createPostinglistWhenNonStrict() { return createPostinglistWhenNonStrict; } + @Override public boolean useEstimateForFetchPostings() { return useEstimateForFetchPostings; } @Override public int contentLayerMetadataFeatureLevel() { return contentLayerMetadataFeatureLevel; } @Override public boolean dynamicHeapSize() { return dynamicHeapSize; } @Override public String unknownConfigDefinition() { return unknownConfigDefinition; } diff --git a/flags/src/main/java/com/yahoo/vespa/flags/Flags.java b/flags/src/main/java/com/yahoo/vespa/flags/Flags.java index 5e395f04956..5af7c82a8c4 100644 --- a/flags/src/main/java/com/yahoo/vespa/flags/Flags.java +++ b/flags/src/main/java/com/yahoo/vespa/flags/Flags.java @@ -334,6 +334,13 @@ public class Flags { "Takes effect at redeployment", INSTANCE_ID); + public static final UnboundBooleanFlag USE_ESTIMATE_FOR_FETCH_POSTINGS = defineFeatureFlag( + "use-estimate-for-fetch-postings", false, + List.of("baldersheim"), "2023-12-06", "2024-01-31", + "If true an estimate assuming uncorrelated query terms is used in Blueprint::fetchPostings", + "Takes effect at redeployment", + INSTANCE_ID); + public static final UnboundBooleanFlag WRITE_CONFIG_SERVER_SESSION_DATA_AS_ONE_BLOB = defineFeatureFlag( "write-config-server-session-data-as-blob", false, List.of("hmusum"), "2023-07-19", "2024-02-01", |