Skip to content

Commit fe7501b

Browse files
committed
Use named virtual threads for Jetty
Closes gh-40152
1 parent 1c2a43d commit fe7501b

File tree

2 files changed

+13
-2
lines changed

2 files changed

+13
-2
lines changed

spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/web/embedded/JettyVirtualThreadsWebServerFactoryCustomizer.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ public JettyVirtualThreadsWebServerFactoryCustomizer(ServerProperties serverProp
4444
public void customize(ConfigurableJettyWebServerFactory factory) {
4545
Assert.state(VirtualThreads.areSupported(), "Virtual threads are not supported");
4646
QueuedThreadPool threadPool = JettyThreadPool.create(this.serverProperties.getJetty().getThreads());
47-
threadPool.setVirtualThreadsExecutor(VirtualThreads.getDefaultVirtualThreadsExecutor());
47+
threadPool.setVirtualThreadsExecutor(VirtualThreads.getNamedVirtualThreadsExecutor("jetty-"));
4848
factory.setThreadPool(threadPool);
4949
}
5050

spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/web/embedded/JettyVirtualThreadsWebServerFactoryCustomizerTests.java

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,13 @@
1616

1717
package org.springframework.boot.autoconfigure.web.embedded;
1818

19+
import java.time.Duration;
20+
import java.util.concurrent.Executor;
21+
import java.util.concurrent.atomic.AtomicReference;
22+
23+
import org.awaitility.Awaitility;
1924
import org.eclipse.jetty.util.thread.QueuedThreadPool;
25+
import org.hamcrest.Matchers;
2026
import org.junit.jupiter.api.Test;
2127
import org.junit.jupiter.api.condition.EnabledForJreRange;
2228
import org.junit.jupiter.api.condition.JRE;
@@ -47,7 +53,12 @@ void shouldConfigureVirtualThreads() {
4753
then(factory).should().setThreadPool(assertArg((threadPool) -> {
4854
assertThat(threadPool).isInstanceOf(QueuedThreadPool.class);
4955
QueuedThreadPool queuedThreadPool = (QueuedThreadPool) threadPool;
50-
assertThat(queuedThreadPool.getVirtualThreadsExecutor()).isNotNull();
56+
Executor executor = queuedThreadPool.getVirtualThreadsExecutor();
57+
assertThat(executor).isNotNull();
58+
AtomicReference<String> threadName = new AtomicReference<>();
59+
executor.execute(() -> threadName.set(Thread.currentThread().getName()));
60+
Awaitility.await().atMost(Duration.ofSeconds(1)).untilAtomic(threadName, Matchers.notNullValue());
61+
assertThat(threadName.get()).startsWith("jetty-");
5162
}));
5263
}
5364

0 commit comments

Comments
 (0)