Polish "Add properties for Jetty threadpool"
See gh-17871
This commit is contained in:
parent
1024d74742
commit
64e8b1d47c
|
@ -907,12 +907,12 @@ public class ServerProperties {
|
|||
private Integer selectors = -1;
|
||||
|
||||
/**
|
||||
* Maximum amount of threads.
|
||||
* Maximum number of threads.
|
||||
*/
|
||||
private Integer maxThreads = 200;
|
||||
|
||||
/**
|
||||
* Minimum amount of threads.
|
||||
* Minimum number of threads.
|
||||
*/
|
||||
private Integer minThreads = 8;
|
||||
|
||||
|
|
|
@ -18,6 +18,7 @@ package org.springframework.boot.autoconfigure.web.embedded;
|
|||
|
||||
import java.time.Duration;
|
||||
import java.util.Arrays;
|
||||
import java.util.function.Consumer;
|
||||
|
||||
import org.eclipse.jetty.server.AbstractConnector;
|
||||
import org.eclipse.jetty.server.ConnectionFactory;
|
||||
|
@ -82,11 +83,11 @@ public class JettyWebServerFactoryCustomizer
|
|||
propertyMapper.from(jettyProperties::getMaxHttpPostSize).asInt(DataSize::toBytes).when(this::isPositive)
|
||||
.to((maxHttpPostSize) -> customizeMaxHttpPostSize(factory, maxHttpPostSize));
|
||||
propertyMapper.from(jettyProperties::getMaxThreads).when(this::isPositive)
|
||||
.to((maxThreads) -> customizeMaxThreads(factory, maxThreads));
|
||||
.to((maxThreads) -> customizeThreadPool(factory, (threadPool) -> threadPool.setMaxThreads(maxThreads)));
|
||||
propertyMapper.from(jettyProperties::getMinThreads).when(this::isPositive)
|
||||
.to((minThreads) -> customizeMinThreads(factory, minThreads));
|
||||
propertyMapper.from(jettyProperties::getIdleTimeout).when(this::isPositive)
|
||||
.to((idleTimeout) -> customizeIdleTimeout(factory, idleTimeout));
|
||||
.to((minThreads) -> customizeThreadPool(factory, (threadPool) -> threadPool.setMinThreads(minThreads)));
|
||||
propertyMapper.from(jettyProperties::getIdleTimeout).when(this::isPositive).to(
|
||||
(idleTimeout) -> customizeThreadPool(factory, (threadPool) -> threadPool.setIdleTimeout(idleTimeout)));
|
||||
propertyMapper.from(properties::getConnectionTimeout).whenNonNull()
|
||||
.to((connectionTimeout) -> customizeConnectionTimeout(factory, connectionTimeout));
|
||||
propertyMapper.from(jettyProperties::getAccesslog).when(ServerProperties.Jetty.Accesslog::isEnabled)
|
||||
|
@ -140,29 +141,11 @@ public class JettyWebServerFactoryCustomizer
|
|||
});
|
||||
}
|
||||
|
||||
private void customizeMaxThreads(ConfigurableJettyWebServerFactory factory, int maxThreads) {
|
||||
private void customizeThreadPool(ConfigurableJettyWebServerFactory factory, Consumer<QueuedThreadPool> customizer) {
|
||||
factory.addServerCustomizers((connector) -> {
|
||||
ThreadPool threadPool = connector.getThreadPool();
|
||||
if (threadPool instanceof QueuedThreadPool) {
|
||||
((QueuedThreadPool) threadPool).setMaxThreads(maxThreads);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private void customizeMinThreads(ConfigurableJettyWebServerFactory factory, int minThreads) {
|
||||
factory.addServerCustomizers((connector) -> {
|
||||
ThreadPool threadPool = connector.getThreadPool();
|
||||
if (threadPool instanceof QueuedThreadPool) {
|
||||
((QueuedThreadPool) threadPool).setMinThreads(minThreads);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private void customizeIdleTimeout(ConfigurableJettyWebServerFactory factory, int idleTimeout) {
|
||||
factory.addServerCustomizers((connector) -> {
|
||||
ThreadPool threadPool = connector.getThreadPool();
|
||||
if (threadPool instanceof QueuedThreadPool) {
|
||||
((QueuedThreadPool) threadPool).setIdleTimeout(idleTimeout);
|
||||
customizer.accept((QueuedThreadPool) threadPool);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
|
|
@ -28,7 +28,6 @@ import org.eclipse.jetty.server.HttpConfiguration.ConnectionFactory;
|
|||
import org.eclipse.jetty.server.RequestLog;
|
||||
import org.eclipse.jetty.server.RequestLogWriter;
|
||||
import org.eclipse.jetty.util.thread.QueuedThreadPool;
|
||||
import org.eclipse.jetty.util.thread.ThreadPool;
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
|
@ -116,33 +115,27 @@ class JettyWebServerFactoryCustomizerTests {
|
|||
}
|
||||
|
||||
@Test
|
||||
void maxThreadsCanBeCustomized() throws IOException {
|
||||
void maxThreadsCanBeCustomized() {
|
||||
bind("server.jetty.max-threads=100");
|
||||
JettyWebServer server = customizeAndGetServer();
|
||||
ThreadPool threadPool = server.getServer().getThreadPool();
|
||||
if (threadPool instanceof QueuedThreadPool) {
|
||||
assertThat(((QueuedThreadPool) threadPool).getMaxThreads()).isEqualTo(100);
|
||||
}
|
||||
QueuedThreadPool threadPool = (QueuedThreadPool) server.getServer().getThreadPool();
|
||||
assertThat(threadPool.getMaxThreads()).isEqualTo(100);
|
||||
}
|
||||
|
||||
@Test
|
||||
void minThreadsCanBeCustomized() throws IOException {
|
||||
void minThreadsCanBeCustomized() {
|
||||
bind("server.jetty.min-threads=100");
|
||||
JettyWebServer server = customizeAndGetServer();
|
||||
ThreadPool threadPool = server.getServer().getThreadPool();
|
||||
if (threadPool instanceof QueuedThreadPool) {
|
||||
assertThat(((QueuedThreadPool) threadPool).getMinThreads()).isEqualTo(100);
|
||||
}
|
||||
QueuedThreadPool threadPool = (QueuedThreadPool) server.getServer().getThreadPool();
|
||||
assertThat(threadPool.getMinThreads()).isEqualTo(100);
|
||||
}
|
||||
|
||||
@Test
|
||||
void idleTimeoutCanBeCustomized() throws IOException {
|
||||
void idleTimeoutCanBeCustomized() {
|
||||
bind("server.jetty.idle-timeout=100");
|
||||
JettyWebServer server = customizeAndGetServer();
|
||||
ThreadPool threadPool = server.getServer().getThreadPool();
|
||||
if (threadPool instanceof QueuedThreadPool) {
|
||||
assertThat(((QueuedThreadPool) threadPool).getIdleTimeout()).isEqualTo(100);
|
||||
}
|
||||
QueuedThreadPool threadPool = (QueuedThreadPool) server.getServer().getThreadPool();
|
||||
assertThat(threadPool.getIdleTimeout()).isEqualTo(100);
|
||||
}
|
||||
|
||||
private CustomRequestLog getRequestLog(JettyWebServer server) {
|
||||
|
|
Loading…
Reference in New Issue