diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2023-12-12 19:09:19 +0100 |
---|---|---|
committer | Henning Baldersheim <balder@yahoo-inc.com> | 2023-12-12 19:09:19 +0100 |
commit | 4c6256f041311352eaae8af9dd0bcadbd2ece89a (patch) | |
tree | 38712e47cc496ba2b6b6ff71ef8563a4677ef102 | |
parent | a6827b11b0c79eb61a69b48a2cd2a313b31d590d (diff) |
Control the use of thread bundles for fetch postings with a feature flag
6 files changed, 18 insertions, 0 deletions
diff --git a/config-model-api/abi-spec.json b/config-model-api/abi-spec.json index ba483fb0421..ae2753d47bc 100644 --- a/config-model-api/abi-spec.json +++ b/config-model-api/abi-spec.json @@ -1290,6 +1290,7 @@ "public boolean alwaysMarkPhraseExpensive()", "public boolean createPostinglistWhenNonStrict()", "public boolean useEstimateForFetchPostings()", + "public boolean useThreadBundleForFetchPostings()", "public boolean restartOnDeployWhenOnnxModelChanges()" ], "fields" : [ ] 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 e5cc13719c1..852e02dab36 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 @@ -118,6 +118,7 @@ public interface ModelContext { @ModelFeatureFlag(owners = {"baldersheim"}) default boolean alwaysMarkPhraseExpensive() { return false; } @ModelFeatureFlag(owners = {"baldersheim"}) default boolean createPostinglistWhenNonStrict() { return true; } @ModelFeatureFlag(owners = {"baldersheim"}) default boolean useEstimateForFetchPostings() { return false; } + @ModelFeatureFlag(owners = {"baldersheim"}) default boolean useThreadBundleForFetchPostings() { return false; } @ModelFeatureFlag(owners = {"hmusum"}) default boolean restartOnDeployWhenOnnxModelChanges() { return false; } } 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 8090344ea8c..dad39e74c37 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 @@ -173,6 +173,7 @@ public class RawRankProfile implements RankProfilesConfig.Producer { private final boolean alwaysMarkPhraseExpensive; private final boolean createPostinglistWhenNonStrict; private final boolean useEstimateForFetchPostings; + private final boolean useThreadBundleForFetchPostings; /** * The rank type definitions used to derive settings for the native rank features @@ -217,6 +218,7 @@ public class RawRankProfile implements RankProfilesConfig.Producer { alwaysMarkPhraseExpensive = deployProperties.featureFlags().alwaysMarkPhraseExpensive(); createPostinglistWhenNonStrict = deployProperties.featureFlags().createPostinglistWhenNonStrict(); useEstimateForFetchPostings = deployProperties.featureFlags().useEstimateForFetchPostings(); + useThreadBundleForFetchPostings = deployProperties.featureFlags().useThreadBundleForFetchPostings(); postFilterThreshold = compiled.getPostFilterThreshold(); approximateThreshold = compiled.getApproximateThreshold(); targetHitsMaxAdjustmentFactor = compiled.getTargetHitsMaxAdjustmentFactor(); @@ -476,6 +478,9 @@ public class RawRankProfile implements RankProfilesConfig.Producer { if (useEstimateForFetchPostings) { properties.add(new Pair<>("vespa.matching.use_estimate_for_fetch_postings", String.valueOf(useEstimateForFetchPostings))); } + if (useThreadBundleForFetchPostings) { + properties.add(new Pair<>("vespa.matching.use_thread_bundle_for_fetch_postings", String.valueOf(useThreadBundleForFetchPostings))); + } 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 e5ef36e07d8..43594c943e3 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 @@ -204,6 +204,7 @@ public class ModelContextImpl implements ModelContext { private final boolean alwaysMarkPhraseExpensive; private final boolean createPostinglistWhenNonStrict; private final boolean useEstimateForFetchPostings; + private final boolean useThreadBundleForFetchPostings; private final int contentLayerMetadataFeatureLevel; private final boolean dynamicHeapSize; private final String unknownConfigDefinition; @@ -257,6 +258,7 @@ public class ModelContextImpl implements ModelContext { 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); + this.useThreadBundleForFetchPostings = flagValue(source, appId, version, Flags.USE_THREAD_BUNDLE_FOR_FETCH_POSTINGS); this.restartOnDeployWhenOnnxModelChanges = flagValue(source, appId, version, Flags.RESTART_ON_DEPLOY_WHEN_ONNX_MODEL_CHANGES); } @@ -306,6 +308,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 boolean useThreadBundleForFetchPostings() { return useThreadBundleForFetchPostings; } @Override public int contentLayerMetadataFeatureLevel() { return contentLayerMetadataFeatureLevel; } @Override public boolean dynamicHeapSize() { return dynamicHeapSize; } @Override public String unknownConfigDefinition() { return unknownConfigDefinition; } diff --git a/container-core/src/main/java/com/yahoo/container/handler/threadpool/ContainerThreadpoolImpl.java b/container-core/src/main/java/com/yahoo/container/handler/threadpool/ContainerThreadpoolImpl.java index f92d218390f..0512560e0b7 100644 --- a/container-core/src/main/java/com/yahoo/container/handler/threadpool/ContainerThreadpoolImpl.java +++ b/container-core/src/main/java/com/yahoo/container/handler/threadpool/ContainerThreadpoolImpl.java @@ -10,6 +10,7 @@ import com.yahoo.jdisc.Metric; import java.util.concurrent.ArrayBlockingQueue; import java.util.concurrent.BlockingQueue; import java.util.concurrent.Executor; +import java.util.concurrent.Executors; import java.util.concurrent.SynchronousQueue; import java.util.concurrent.TimeUnit; import java.util.logging.Logger; 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 5af7c82a8c4..e89ca1871cb 100644 --- a/flags/src/main/java/com/yahoo/vespa/flags/Flags.java +++ b/flags/src/main/java/com/yahoo/vespa/flags/Flags.java @@ -341,6 +341,13 @@ public class Flags { "Takes effect at redeployment", INSTANCE_ID); + public static final UnboundBooleanFlag USE_THREAD_BUNDLE_FOR_FETCH_POSTINGS = defineFeatureFlag( + "use-thread-bundle-for-fetch-postings", false, + List.of("baldersheim"), "2023-12-06", "2024-01-31", + "If true the query thread bundle is used for 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", |