diff options
Diffstat (limited to 'config-model')
16 files changed, 49 insertions, 135 deletions
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/admin/Slobrok.java b/config-model/src/main/java/com/yahoo/vespa/model/admin/Slobrok.java index 07b1de3fdad..2b9551c2858 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/admin/Slobrok.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/admin/Slobrok.java @@ -17,7 +17,6 @@ public class Slobrok extends AbstractService implements StateserverConfig.Produc private static final long serialVersionUID = 1L; public final static int BASEPORT = 19099; - public final boolean useNewLogic; @Override public void getConfig(StateserverConfig.Builder builder) { @@ -32,7 +31,6 @@ public class Slobrok extends AbstractService implements StateserverConfig.Produc ModelContext.FeatureFlags featureFlags) { super(parent, "slobrok." + index); - this.useNewLogic = featureFlags.newLocationBrokerLogic(); portsMeta.on(0).tag("rpc").tag("admin").tag("status"); portsMeta.on(1).tag("http").tag("state"); setProp("index", index); @@ -50,10 +48,7 @@ public class Slobrok extends AbstractService implements StateserverConfig.Produc } public String getStartupCommand() { - if (useNewLogic) { - return "exec $ROOT/sbin/vespa-slobrok -N -p " + getRpcPort() + " -c " + getConfigId(); - } - return "exec $ROOT/sbin/vespa-slobrok -p " + getRpcPort() + " -c " + getConfigId(); + return "exec $ROOT/sbin/vespa-slobrok -N -p " + getRpcPort() + " -c " + getConfigId(); } @Override diff --git a/config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/VespaMetricSet.java b/config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/VespaMetricSet.java index c91c4e92486..0638679b817 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/VespaMetricSet.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/VespaMetricSet.java @@ -181,6 +181,8 @@ public class VespaMetricSet { metrics.add(new Metric("jdisc.deactivated_containers.with_retained_refs.last")); metrics.add(new Metric("athenz-tenant-cert.expiry.seconds.last")); + metrics.add(new Metric("node-certificate.expiry.seconds.last")); + metrics.add(new Metric("container-iam-role.expiry.seconds.last")); metrics.add(new Metric("jdisc.http.request.prematurely_closed.rate")); addMetric(metrics, "jdisc.http.request.requests_per_connection", List.of("sum", "count", "min", "max", "average")); diff --git a/config-model/src/main/java/com/yahoo/vespa/model/clients/ContainerDocumentApi.java b/config-model/src/main/java/com/yahoo/vespa/model/clients/ContainerDocumentApi.java index 9e1407ec93e..1c2da13738f 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/clients/ContainerDocumentApi.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/clients/ContainerDocumentApi.java @@ -22,9 +22,6 @@ public class ContainerDocumentApi { public static final String DOCUMENT_V1_PREFIX = "/document/v1"; - private static final int FALLBACK_MAX_POOL_SIZE = 0; // Use fallback based on actual logical core count on host - private static final int FALLBACK_CORE_POOL_SIZE = 0; // Use fallback based on actual logical core count on host - public ContainerDocumentApi(ContainerCluster<?> cluster, Options options) { addRestApiHandler(cluster, options); addFeedHandler(cluster, options); @@ -102,22 +99,7 @@ public class ContainerDocumentApi { // User options overrides below configuration if (hasUserOptions()) return; - - builder.maxThreads(maxPoolSize()); - builder.minThreads(minPoolSize()); - builder.queueSize(500); - } - - private int maxPoolSize() { - double vcpu = cluster.vcpu().orElse(0); - if (vcpu == 0) return FALLBACK_MAX_POOL_SIZE; - return Math.max(2, (int)Math.ceil(vcpu * 4.0)); - } - - private int minPoolSize() { - double vcpu = cluster.vcpu().orElse(0); - if (vcpu == 0) return FALLBACK_CORE_POOL_SIZE; - return Math.max(1, (int)Math.ceil(vcpu * 2.0)); + builder.maxThreads(-4).minThreads(-4).queueSize(500); } } diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/ContainerCluster.java b/config-model/src/main/java/com/yahoo/vespa/model/container/ContainerCluster.java index f5b168958c0..d05650b10b5 100755 --- a/config-model/src/main/java/com/yahoo/vespa/model/container/ContainerCluster.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/container/ContainerCluster.java @@ -70,7 +70,6 @@ import java.util.List; import java.util.Map; import java.util.Objects; import java.util.Optional; -import java.util.OptionalDouble; import java.util.Set; /** @@ -652,12 +651,4 @@ public abstract class ContainerCluster<CONTAINER extends Container> public boolean getDeferChangesUntilRestart() { return deferChangesUntilRestart; } - /** Effective vcpu for the containers in cluster. Use this value as scale factor for performance/resource tuning. **/ - public OptionalDouble vcpu() { - return getContainers().stream() - .filter(c -> c.getHostResource() != null && c.getHostResource().realResources() != null) - .mapToDouble(c -> c.getHostResource().realResources().vcpu()) - .max(); // Use highest vcpu as scale factor - } - } diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/DefaultThreadpoolProvider.java b/config-model/src/main/java/com/yahoo/vespa/model/container/DefaultThreadpoolProvider.java index 4d665b0bb58..e74eac09558 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/container/DefaultThreadpoolProvider.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/container/DefaultThreadpoolProvider.java @@ -46,13 +46,7 @@ class DefaultThreadpoolProvider extends SimpleComponent implements ThreadpoolCon return; } - double vcpu = cluster.vcpu().orElse(0); - if (vcpu == 0) return; - - // Configuration is currently identical to the search handler's threadpool - int workerThreads = Math.max(8, (int)Math.ceil(vcpu * 2.0)); - builder.maxthreads(workerThreads); - builder.corePoolSize(workerThreads); - builder.queueSize((int)(workerThreads * 40.0)); + if (!cluster.isHostedVespa()) return; + builder.corePoolSize(-2).maxthreads(-2).queueSize(-40); } } diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/component/AccessLogComponent.java b/config-model/src/main/java/com/yahoo/vespa/model/container/component/AccessLogComponent.java index fc41da43479..33e712feeb1 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/container/component/AccessLogComponent.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/container/component/AccessLogComponent.java @@ -9,8 +9,6 @@ import com.yahoo.osgi.provider.model.ComponentModel; import com.yahoo.vespa.model.container.ApplicationContainerCluster; import com.yahoo.vespa.model.container.ContainerCluster; -import java.util.OptionalInt; - /** * @author Tony Vaagenes * @author gjoranv @@ -32,11 +30,10 @@ public final class AccessLogComponent extends SimpleComponent implements AccessL public AccessLogComponent(ContainerCluster<?> cluster, AccessLogType logType, CompressionType compressionType, String clusterName, boolean isHostedVespa) { - this(cluster, logType, compressionType, + this(logType, compressionType, String.format("logs/vespa/qrs/%s.%s.%s", capitalize(logType.name()), clusterName, "%Y%m%d%H%M%S"), null, null, isHostedVespa, - capitalize(logType.name()) + "." + clusterName, - queueSize(cluster).orElse(-1), + capitalize(logType.name()) + "." + clusterName, -1, ((cluster instanceof ApplicationContainerCluster) ? 4*1024*1024 : null)); } @@ -44,8 +41,7 @@ public final class AccessLogComponent extends SimpleComponent implements AccessL return name.substring(0, 1).toUpperCase() + name.substring(1); } - public AccessLogComponent(ContainerCluster<?> cluster, - AccessLogType logType, + public AccessLogComponent(AccessLogType logType, CompressionType compressionType, String fileNamePattern, String rotationInterval, @@ -69,13 +65,6 @@ public final class AccessLogComponent extends SimpleComponent implements AccessL throw new RuntimeException("File name pattern required when configuring access log."); } - private static OptionalInt queueSize(ContainerCluster<?> cluster) { - if (cluster == null) return OptionalInt.empty(); - double vcpu = cluster.vcpu().orElse(0); - if (vcpu <= 0) return OptionalInt.empty(); - return OptionalInt.of((int) Math.max(4096, Math.ceil(vcpu * 256.0))); - } - private static String accessLogClass(AccessLogType logType) { switch (logType) { case queryAccessLog: @@ -105,9 +94,7 @@ public final class AccessLogComponent extends SimpleComponent implements AccessL } else if (isHostedVespa) { builder.compressOnRotation(true); } - if (queueSize >= 0) { - builder.queueSize(queueSize); - } + builder.queueSize(queueSize); if (bufferSize != null) { builder.bufferSize(bufferSize); } diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/component/ConnectionLogComponent.java b/config-model/src/main/java/com/yahoo/vespa/model/container/component/ConnectionLogComponent.java index 0b51cd163a2..4afac252085 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/container/component/ConnectionLogComponent.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/container/component/ConnectionLogComponent.java @@ -6,38 +6,25 @@ import com.yahoo.container.logging.ConnectionLog; import com.yahoo.container.logging.ConnectionLogConfig; import com.yahoo.vespa.model.container.ContainerCluster; -import java.util.OptionalInt; - public class ConnectionLogComponent extends SimpleComponent implements ConnectionLogConfig.Producer { private final String logDirectoryName; private final String clusterName; - private final int queueSize; public ConnectionLogComponent(ContainerCluster<?> cluster, Class<? extends ConnectionLog> cls, String logDirectoryName) { - this(cluster, cls, logDirectoryName, cluster.getName()); + this(cls, logDirectoryName, cluster.getName()); } - public ConnectionLogComponent(ContainerCluster<?> cluster, Class<? extends ConnectionLog> cls, String logDirectoryName, String clusterName) { + public ConnectionLogComponent(Class<? extends ConnectionLog> cls, String logDirectoryName, String clusterName) { super(cls.getName()); this.logDirectoryName = logDirectoryName; this.clusterName = clusterName; - this.queueSize = queueSize(cluster).orElse(-1); - } - - private static OptionalInt queueSize(ContainerCluster<?> cluster) { - if (cluster == null) return OptionalInt.empty(); - double vcpu = cluster.vcpu().orElse(0); - if (vcpu <= 0) return OptionalInt.empty(); - return OptionalInt.of((int) Math.max(4096, Math.ceil(vcpu * 512.0))); } @Override public void getConfig(ConnectionLogConfig.Builder builder) { builder.cluster(clusterName); builder.logDirectoryName(logDirectoryName); - if (queueSize >= 0) { - builder.queueSize(queueSize); - } + builder.queueSize(-1); } } diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/http/JettyHttpServer.java b/config-model/src/main/java/com/yahoo/vespa/model/container/http/JettyHttpServer.java index d13709114bf..a2181f317a6 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/container/http/JettyHttpServer.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/container/http/JettyHttpServer.java @@ -70,18 +70,11 @@ public class JettyHttpServer extends SimpleComponent implements ServerConfig.Pro private void configureJettyThreadpool(ServerConfig.Builder builder) { if (cluster == null) return; if (cluster instanceof ApplicationContainerCluster) { - configureApplicationClusterJettyThreadPool(builder); + if (isHostedVespa) builder.minWorkerThreads(-1).maxWorkerThreads(-1); } else { builder.minWorkerThreads(4).maxWorkerThreads(4); } } - private void configureApplicationClusterJettyThreadPool(ServerConfig.Builder builder) { - double vcpu = cluster.vcpu().orElse(0); - if (vcpu > 0) { - int threads = 16 + (int) Math.ceil(vcpu); - builder.minWorkerThreads(threads).maxWorkerThreads(threads); - } - } static ComponentModel providerComponentModel(String parentId, String className) { final ComponentSpecification classNameSpec = new ComponentSpecification( diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/http/ssl/HostedSslConnectorFactory.java b/config-model/src/main/java/com/yahoo/vespa/model/container/http/ssl/HostedSslConnectorFactory.java index b25463b8547..aab417db1e2 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/container/http/ssl/HostedSslConnectorFactory.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/container/http/ssl/HostedSslConnectorFactory.java @@ -25,16 +25,17 @@ public class HostedSslConnectorFactory extends ConnectorFactory { private final boolean enforceClientAuth; private final boolean enforceHandshakeClientAuth; private final Collection<String> tlsCiphersOverride; + private final Duration maxConnectionLife; /** * Create connector factory that uses a certificate provided by the config-model / configserver and default hosted Vespa truststore. */ public static HostedSslConnectorFactory withProvidedCertificate( String serverName, EndpointCertificateSecrets endpointCertificateSecrets, boolean enforceHandshakeClientAuth, - Collection<String> tlsCiphersOverride) { + Collection<String> tlsCiphersOverride, Duration maxConnectionLife) { ConfiguredDirectSslProvider sslProvider = createConfiguredDirectSslProvider( serverName, endpointCertificateSecrets, DEFAULT_HOSTED_TRUSTSTORE, /*tlsCaCertificates*/null, enforceHandshakeClientAuth); - return new HostedSslConnectorFactory(sslProvider, false, enforceHandshakeClientAuth, tlsCiphersOverride); + return new HostedSslConnectorFactory(sslProvider, false, enforceHandshakeClientAuth, tlsCiphersOverride, maxConnectionLife); } /** @@ -42,25 +43,28 @@ public class HostedSslConnectorFactory extends ConnectorFactory { */ public static HostedSslConnectorFactory withProvidedCertificateAndTruststore( String serverName, EndpointCertificateSecrets endpointCertificateSecrets, String tlsCaCertificates, - Collection<String> tlsCiphersOverride) { + Collection<String> tlsCiphersOverride, Duration maxConnectionLife) { ConfiguredDirectSslProvider sslProvider = createConfiguredDirectSslProvider( serverName, endpointCertificateSecrets, /*tlsCaCertificatesPath*/null, tlsCaCertificates, false); - return new HostedSslConnectorFactory(sslProvider, true, false, tlsCiphersOverride); + return new HostedSslConnectorFactory(sslProvider, true, false, tlsCiphersOverride, maxConnectionLife); } /** * Create connector factory that uses the default certificate and truststore provided by Vespa (through Vespa-global TLS configuration). */ - public static HostedSslConnectorFactory withDefaultCertificateAndTruststore(String serverName, Collection<String> tlsCiphersOverride) { - return new HostedSslConnectorFactory(new DefaultSslProvider(serverName), true, false, tlsCiphersOverride); + public static HostedSslConnectorFactory withDefaultCertificateAndTruststore( + String serverName, Collection<String> tlsCiphersOverride, Duration maxConnectionLife) { + return new HostedSslConnectorFactory(new DefaultSslProvider(serverName), true, false, tlsCiphersOverride, maxConnectionLife); } private HostedSslConnectorFactory(SslProvider sslProvider, boolean enforceClientAuth, - boolean enforceHandshakeClientAuth, Collection<String> tlsCiphersOverride) { + boolean enforceHandshakeClientAuth, Collection<String> tlsCiphersOverride, + Duration maxConnectionLife) { super(new Builder("tls4443", 4443).sslProvider(sslProvider)); this.enforceClientAuth = enforceClientAuth; this.enforceHandshakeClientAuth = enforceHandshakeClientAuth; this.tlsCiphersOverride = tlsCiphersOverride; + this.maxConnectionLife = maxConnectionLife; } private static ConfiguredDirectSslProvider createConfiguredDirectSslProvider( @@ -96,6 +100,6 @@ public class HostedSslConnectorFactory extends ConnectorFactory { connectorBuilder .proxyProtocol(new ConnectorConfig.ProxyProtocol.Builder().enabled(true).mixedMode(true)) .idleTimeout(Duration.ofSeconds(30).toSeconds()) - .maxConnectionLife(Duration.ofMinutes(10).toSeconds()); + .maxConnectionLife(maxConnectionLife.toSeconds()); } } diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/xml/AccessLogBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/container/xml/AccessLogBuilder.java index d7812e9b4ff..62f04edf0ae 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/container/xml/AccessLogBuilder.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/container/xml/AccessLogBuilder.java @@ -55,7 +55,6 @@ public class AccessLogBuilder { @Override protected AccessLogComponent doBuild(DeployState deployState, AbstractConfigProducer<?> ancestor, Element spec) { return new AccessLogComponent( - (ContainerCluster<?>) ancestor, accessLogType, compressionType(spec, isHostedVespa), fileNamePattern(spec), diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/xml/ConfigServerContainerModelBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/container/xml/ConfigServerContainerModelBuilder.java index a1f52cca9fd..75f11020c15 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/container/xml/ConfigServerContainerModelBuilder.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/container/xml/ConfigServerContainerModelBuilder.java @@ -6,7 +6,6 @@ import com.yahoo.config.model.deploy.DeployState; import com.yahoo.container.logging.FileConnectionLog; import com.yahoo.vespa.model.container.ApplicationContainerCluster; import com.yahoo.vespa.model.container.ContainerModel; -import com.yahoo.vespa.model.container.ContainerModelEvaluation; import com.yahoo.vespa.model.container.component.AccessLogComponent; import com.yahoo.vespa.model.container.component.ConnectionLogComponent; import com.yahoo.vespa.model.container.configserver.ConfigserverCluster; @@ -48,7 +47,7 @@ public class ConfigServerContainerModelBuilder extends ContainerModelBuilder { if (isHosted()){ cluster.addComponent( new AccessLogComponent( - cluster, AccessLogComponent.AccessLogType.jsonAccessLog, AccessLogComponent.CompressionType.ZSTD, + AccessLogComponent.AccessLogType.jsonAccessLog, AccessLogComponent.CompressionType.ZSTD, "logs/vespa/configserver/access-json.log.%Y%m%d%H%M%S", null, true, true, "access-json.log", 1024,256*1024)); cluster.addComponent(new ConnectionLogComponent(cluster, FileConnectionLog.class, "configserver")); } else { diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilder.java index c62dee68b2d..2622a9e50b7 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilder.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilder.java @@ -92,6 +92,7 @@ import org.w3c.dom.Node; import java.net.URI; import java.security.cert.X509Certificate; +import java.time.Duration; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; @@ -436,6 +437,7 @@ public class ContainerModelBuilder extends ConfigModelBuilder<ContainerModel> { // If the deployment contains certificate/private key reference, setup TLS port HostedSslConnectorFactory connectorFactory; Collection<String> tlsCiphersOverride = deployState.getProperties().tlsCiphersOverride(); + Duration maxConnectionLife = Duration.ofSeconds(deployState.featureFlags().maxConnectionLifeInHosted()); if (deployState.endpointCertificateSecrets().isPresent()) { boolean authorizeClient = deployState.zone().system().isPublic(); if (authorizeClient && deployState.tlsClientAuthority().isEmpty()) { @@ -450,11 +452,11 @@ public class ContainerModelBuilder extends ConfigModelBuilder<ContainerModel> { connectorFactory = authorizeClient ? HostedSslConnectorFactory.withProvidedCertificateAndTruststore( - serverName, endpointCertificateSecrets, getTlsClientAuthorities(deployState), tlsCiphersOverride) + serverName, endpointCertificateSecrets, getTlsClientAuthorities(deployState), tlsCiphersOverride, maxConnectionLife) : HostedSslConnectorFactory.withProvidedCertificate( - serverName, endpointCertificateSecrets, enforceHandshakeClientAuth, tlsCiphersOverride); + serverName, endpointCertificateSecrets, enforceHandshakeClientAuth, tlsCiphersOverride, maxConnectionLife); } else { - connectorFactory = HostedSslConnectorFactory.withDefaultCertificateAndTruststore(serverName, tlsCiphersOverride); + connectorFactory = HostedSslConnectorFactory.withDefaultCertificateAndTruststore(serverName, tlsCiphersOverride, maxConnectionLife); } cluster.getHttp().getAccessControl().ifPresent(accessControl -> accessControl.configureHostedConnector(connectorFactory)); server.addConnector(connectorFactory); 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 95b333f4e52..d3001bd9100 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 @@ -48,22 +48,10 @@ class SearchHandler extends ProcessingHandler<SearchChains> { // User options overrides below configuration if (hasUserOptions()) return; - - double vcpu = cluster.vcpu().orElse(0); - if (vcpu == 0) { - builder.maxThreads(500); - builder.minThreads(500); - builder.queueSize(0); + if (cluster.isHostedVespa()) { + builder.maxThreads(-2).minThreads(-2).queueSize(-40); } else { - // Controls max number of concurrent requests per container - int workerThreads = Math.max(8, (int)Math.ceil(vcpu * 2.0)); - builder.maxThreads(workerThreads); - builder.minThreads(workerThreads); - - // This controls your burst handling capability. - // 0 => No extra burst handling beyond you max concurrent requests (maxthreads). - // N => N times max concurrent requests as a buffer for handling bursts - builder.queueSize((int)(workerThreads * 40.0)); + builder.maxThreads(500).minThreads(500).queueSize(0); } } diff --git a/config-model/src/test/java/com/yahoo/vespa/model/container/ContainerClusterTest.java b/config-model/src/test/java/com/yahoo/vespa/model/container/ContainerClusterTest.java index a66ea736a5b..a2887ae76c1 100755 --- a/config-model/src/test/java/com/yahoo/vespa/model/container/ContainerClusterTest.java +++ b/config-model/src/test/java/com/yahoo/vespa/model/container/ContainerClusterTest.java @@ -277,45 +277,37 @@ public class ContainerClusterTest { } @Test - public void config_for_default_threadpool_provider_scales_with_node_resources() { - HostProvisionerWithCustomRealResource hostProvisioner = new HostProvisionerWithCustomRealResource(); + public void config_for_default_threadpool_provider_scales_with_node_resources_in_hosted() { MockRoot root = new MockRoot( "foo", new DeployState.Builder() + .properties(new TestProperties().setHostedVespa(true)) .applicationPackage(new MockApplicationPackage.Builder().build()) - .modelHostProvisioner(hostProvisioner) .build()); ApplicationContainerCluster cluster = createContainerCluster(root, false); - HostResource hostResource = new HostResource( - new Host(null, "host-c1"), - hostProvisioner.allocateHost("host-c1")); - addContainerWithHostResource(root, cluster, "c1", hostResource); + addContainer(root, cluster, "c1", "host-c1"); root.freezeModelTopology(); ThreadpoolConfig threadpoolConfig = root.getConfig(ThreadpoolConfig.class, "container0/component/default-threadpool"); - assertEquals(8, threadpoolConfig.maxthreads()); - assertEquals(320, threadpoolConfig.queueSize()); + assertEquals(-2, threadpoolConfig.maxthreads()); + assertEquals(-40, threadpoolConfig.queueSize()); } @Test - public void jetty_threadpool_scales_with_node_resources() { - HostProvisionerWithCustomRealResource hostProvisioner = new HostProvisionerWithCustomRealResource(12); + public void jetty_threadpool_scales_with_node_resources_in_hosted() { MockRoot root = new MockRoot( "foo", new DeployState.Builder() + .properties(new TestProperties().setHostedVespa(true)) .applicationPackage(new MockApplicationPackage.Builder().build()) - .modelHostProvisioner(hostProvisioner) .build()); ApplicationContainerCluster cluster = createContainerCluster(root, false); - HostResource hostResource = new HostResource( - new Host(null, "host-c1"), - hostProvisioner.allocateHost("host-c1")); - addContainerWithHostResource(root, cluster, "c1", hostResource); + addContainer(root, cluster, "c1", "host-c1"); root.freezeModelTopology(); ServerConfig cfg = root.getConfig(ServerConfig.class, "container0/c1/DefaultHttpServer"); - assertEquals(28, cfg.maxWorkerThreads()); - assertEquals(28, cfg.minWorkerThreads()); + assertEquals(-1, cfg.maxWorkerThreads()); // Scale with cpu count observed by JVM + assertEquals(-1, cfg.minWorkerThreads()); // Scale with cpu count observed by JVM } @Test diff --git a/config-model/src/test/java/com/yahoo/vespa/model/container/xml/AccessLogTest.java b/config-model/src/test/java/com/yahoo/vespa/model/container/xml/AccessLogTest.java index 80aafdd4ec7..06281c7b57e 100644 --- a/config-model/src/test/java/com/yahoo/vespa/model/container/xml/AccessLogTest.java +++ b/config-model/src/test/java/com/yahoo/vespa/model/container/xml/AccessLogTest.java @@ -117,7 +117,7 @@ public class AccessLogTest extends ContainerModelBuilderTestBase { assertNotNull(connectionLogComponent); ConnectionLogConfig config = root.getConfig(ConnectionLogConfig.class, "default/component/com.yahoo.container.logging.FileConnectionLog"); assertEquals("default", config.cluster()); - assertEquals(10000, config.queueSize()); + assertEquals(-1, config.queueSize()); assertEquals(256*1024, config.bufferSize()); } diff --git a/config-model/src/test/java/com/yahoo/vespa/model/container/xml/ContainerDocumentApiBuilderTest.java b/config-model/src/test/java/com/yahoo/vespa/model/container/xml/ContainerDocumentApiBuilderTest.java index 3c733d5109d..0176d5f6ffc 100644 --- a/config-model/src/test/java/com/yahoo/vespa/model/container/xml/ContainerDocumentApiBuilderTest.java +++ b/config-model/src/test/java/com/yahoo/vespa/model/container/xml/ContainerDocumentApiBuilderTest.java @@ -6,7 +6,6 @@ import com.yahoo.config.model.test.MockApplicationPackage; import com.yahoo.config.model.test.MockRoot; import com.yahoo.container.handler.threadpool.ContainerThreadpoolConfig; import com.yahoo.vespa.model.container.ContainerCluster; -import com.yahoo.vespa.model.container.HostProvisionerWithCustomRealResource; import com.yahoo.vespa.model.container.component.Handler; import com.yahoo.vespa.model.container.component.SystemBindingPattern; import com.yahoo.vespa.model.container.component.UserBindingPattern; @@ -98,7 +97,7 @@ public class ContainerDocumentApiBuilderTest extends ContainerModelBuilderTestBa " <document-api />", nodesXml, "</container>"); - root = new MockRoot("root", new MockApplicationPackage.Builder().build(), new HostProvisionerWithCustomRealResource()); + root = new MockRoot("root", new MockApplicationPackage.Builder().build()); createModel(root, elem); Map<String, Handler<?>> handlers = getHandlers("cluster1"); Handler<?> feedApiHandler = handlers.get("com.yahoo.vespa.http.server.FeedHandler"); @@ -107,8 +106,8 @@ public class ContainerDocumentApiBuilderTest extends ContainerModelBuilderTestBa ContainerThreadpoolConfig config = root.getConfig( ContainerThreadpoolConfig.class, "cluster1/component/com.yahoo.vespa.http.server.FeedHandler/threadpool@feedapi-handler"); - assertEquals(16, config.maxThreads()); - assertEquals(8, config.minThreads()); + assertEquals(-4, config.maxThreads()); + assertEquals(-4, config.minThreads()); } @Test |