Polish "Add properties for Jetty threadpool"

See gh-17871
pull/17884/head
Madhura Bhave 5 years ago
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…
Cancel
Save