diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2023-10-04 18:12:22 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-10-04 18:12:22 +0200 |
commit | a42a5e9e155d5ea18a2004fca7b0845f6452d945 (patch) | |
tree | 5498b12b7d75ade8b163fc74d5fa85d2c004cb8f | |
parent | 50863326bad2a90a28327898681b9d375b30b301 (diff) | |
parent | d388681d24f3e219a5f58b494bc169a2b9e92045 (diff) |
Merge pull request #28794 from vespa-engine/bjorncs/container-threadpool-configuration
Add feature flag to override search handler threadpool size
5 files changed, 18 insertions, 4 deletions
diff --git a/config-model-api/abi-spec.json b/config-model-api/abi-spec.json index 2c5be906633..b28401f1873 100644 --- a/config-model-api/abi-spec.json +++ b/config-model-api/abi-spec.json @@ -1289,7 +1289,8 @@ "public boolean useReconfigurableDispatcher()", "public int contentLayerMetadataFeatureLevel()", "public boolean dynamicHeapSize()", - "public java.lang.String unknownConfigDefinition()" + "public java.lang.String unknownConfigDefinition()", + "public int searchHandlerThreadpool()" ], "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 57d013ebd01..024a4c233e5 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 @@ -120,6 +120,7 @@ public interface ModelContext { @ModelFeatureFlag(owners = {"vekterli"}) default int contentLayerMetadataFeatureLevel() { return 0; } @ModelFeatureFlag(owners = {"bjorncs"}) default boolean dynamicHeapSize() { return false; } @ModelFeatureFlag(owners = {"hmusum"}) default String unknownConfigDefinition() { return "log"; } + @ModelFeatureFlag(owners = {"hmusum"}) default int searchHandlerThreadpool() { return 2; } } /** 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/container/xml/SearchHandler.java b/config-model/src/main/java/com/yahoo/vespa/model/container/xml/SearchHandler.java index 3cd296c1469..7bdd2ce51a4 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/container/xml/SearchHandler.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/container/xml/SearchHandler.java @@ -49,16 +49,19 @@ class SearchHandler extends ProcessingHandler<SearchChains> { private static class Threadpool extends ContainerThreadpool { + private final int threads; + Threadpool(DeployState ds, Element options) { super(ds, "search-handler", options); + threads = ds.featureFlags().searchHandlerThreadpool(); } @Override public void setDefaultConfigValues(ContainerThreadpoolConfig.Builder builder) { builder.maxThreadExecutionTimeSeconds(190) .keepAliveTime(5.0) - .maxThreads(-2) - .minThreads(-2) + .maxThreads(-threads) + .minThreads(-threads) .queueSize(-40); } 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 96b0b03c832..029158056b8 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 @@ -29,7 +29,6 @@ import com.yahoo.config.provision.Zone; import com.yahoo.container.jdisc.secretstore.SecretStore; import com.yahoo.vespa.config.server.tenant.SecretStoreExternalIdRetriever; import com.yahoo.vespa.flags.FetchVector; -import com.yahoo.vespa.flags.Flag; import com.yahoo.vespa.flags.FlagSource; import com.yahoo.vespa.flags.Flags; import com.yahoo.vespa.flags.PermanentFlags; @@ -210,6 +209,7 @@ public class ModelContextImpl implements ModelContext { private final int contentLayerMetadataFeatureLevel; private final boolean dynamicHeapSize; private final String unknownConfigDefinition; + private final int searchHandlerThreadpool; public FeatureFlags(FlagSource source, ApplicationId appId, Version version) { this.defaultTermwiseLimit = flagValue(source, appId, version, Flags.DEFAULT_TERM_WISE_LIMIT); @@ -254,6 +254,7 @@ public class ModelContextImpl implements ModelContext { this.contentLayerMetadataFeatureLevel = flagValue(source, appId, version, Flags.CONTENT_LAYER_METADATA_FEATURE_LEVEL); this.dynamicHeapSize = flagValue(source, appId, version, Flags.DYNAMIC_HEAP_SIZE); this.unknownConfigDefinition = flagValue(source, appId, version, Flags.UNKNOWN_CONFIG_DEFINITION); + this.searchHandlerThreadpool = flagValue(source, appId, version, Flags.SEARCH_HANDLER_THREADPOOL); } @Override public int heapSizePercentage() { return heapPercentage; } @@ -306,6 +307,7 @@ public class ModelContextImpl implements ModelContext { @Override public int contentLayerMetadataFeatureLevel() { return contentLayerMetadataFeatureLevel; } @Override public boolean dynamicHeapSize() { return dynamicHeapSize; } @Override public String unknownConfigDefinition() { return unknownConfigDefinition; } + @Override public int searchHandlerThreadpool() { return searchHandlerThreadpool; } private static <V> V flagValue(FlagSource source, ApplicationId appId, Version vespaVersion, UnboundFlag<? extends V, ?, ?> flag) { return flag.bindTo(source) 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 0d187514e53..27c9e9ee7da 100644 --- a/flags/src/main/java/com/yahoo/vespa/flags/Flags.java +++ b/flags/src/main/java/com/yahoo/vespa/flags/Flags.java @@ -422,6 +422,13 @@ public class Flags { "Takes effect on redeployment through controller", INSTANCE_ID, APPLICATION_ID, TENANT_ID); + public static final UnboundIntFlag SEARCH_HANDLER_THREADPOOL = defineIntFlag( + "search-handler-threadpool", 2, + List.of("bjorncs", "baldersheim"), "2023-10-01", "2024-01-01", + "Adjust search handler threadpool size", + "Takes effect at redeployment", + APPLICATION_ID); + /** WARNING: public for testing: All flags should be defined in {@link Flags}. */ public static UnboundBooleanFlag defineFeatureFlag(String flagId, boolean defaultValue, List<String> owners, String createdAt, String expiresAt, String description, |