Skip to content

Commit b9ce639

Browse files
committed
Merge pull request #47696 from Lublanski
* pr/47696: Polish "Fix Homebrew formula to use libexec" Fix Homebrew formula to use libexec Configure Jetty with VirtualThreadPool Closes gh-47696
2 parents 9f9c178 + f8e04e0 commit b9ce639

File tree

3 files changed

+17
-23
lines changed

3 files changed

+17
-23
lines changed

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

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
package org.springframework.boot.autoconfigure.web.embedded;
1818

1919
import org.eclipse.jetty.util.VirtualThreads;
20-
import org.eclipse.jetty.util.thread.QueuedThreadPool;
20+
import org.eclipse.jetty.util.thread.VirtualThreadPool;
2121

2222
import org.springframework.boot.autoconfigure.web.ServerProperties;
2323
import org.springframework.boot.web.embedded.jetty.ConfigurableJettyWebServerFactory;
@@ -29,6 +29,7 @@
2929
* Activates virtual threads on the {@link ConfigurableJettyWebServerFactory}.
3030
*
3131
* @author Moritz Halbritter
32+
* @author Brian Clozel
3233
* @since 3.2.0
3334
*/
3435
public class JettyVirtualThreadsWebServerFactoryCustomizer
@@ -43,9 +44,9 @@ public JettyVirtualThreadsWebServerFactoryCustomizer(ServerProperties serverProp
4344
@Override
4445
public void customize(ConfigurableJettyWebServerFactory factory) {
4546
Assert.state(VirtualThreads.areSupported(), "Virtual threads are not supported");
46-
QueuedThreadPool threadPool = JettyThreadPool.create(this.serverProperties.getJetty().getThreads());
47-
threadPool.setVirtualThreadsExecutor(VirtualThreads.getNamedVirtualThreadsExecutor("jetty-"));
48-
factory.setThreadPool(threadPool);
47+
VirtualThreadPool virtualThreadPool = new VirtualThreadPool();
48+
virtualThreadPool.setName("jetty-");
49+
factory.setThreadPool(virtualThreadPool);
4950
}
5051

5152
@Override

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

Lines changed: 4 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -16,13 +16,7 @@
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;
24-
import org.eclipse.jetty.util.thread.QueuedThreadPool;
25-
import org.hamcrest.Matchers;
19+
import org.eclipse.jetty.util.thread.VirtualThreadPool;
2620
import org.junit.jupiter.api.Test;
2721
import org.junit.jupiter.api.condition.EnabledForJreRange;
2822
import org.junit.jupiter.api.condition.JRE;
@@ -51,14 +45,9 @@ void shouldConfigureVirtualThreads() {
5145
ConfigurableJettyWebServerFactory factory = mock(ConfigurableJettyWebServerFactory.class);
5246
customizer.customize(factory);
5347
then(factory).should().setThreadPool(assertArg((threadPool) -> {
54-
assertThat(threadPool).isInstanceOf(QueuedThreadPool.class);
55-
QueuedThreadPool queuedThreadPool = (QueuedThreadPool) threadPool;
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-");
48+
assertThat(threadPool).isInstanceOf(VirtualThreadPool.class);
49+
VirtualThreadPool virtualThreadPool = (VirtualThreadPool) threadPool;
50+
assertThat(virtualThreadPool.getName()).isEqualTo("jetty-");
6251
}));
6352
}
6453

spring-boot-project/spring-boot-tools/spring-boot-cli/src/main/homebrew/spring-boot.rb

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,13 @@ def install
1616
root = '.'
1717
end
1818

19-
bin.install Dir["#{root}/bin/spring"]
20-
lib.install Dir["#{root}/lib/spring-boot-cli-*.jar"]
21-
bash_completion.install Dir["#{root}/shell-completion/bash/spring"]
22-
zsh_completion.install Dir["#{root}/shell-completion/zsh/_spring"]
19+
libexec.install Dir["#{root}/*"]
20+
(bin/"spring").write_env_script libexec/"bin/spring", {}
21+
22+
bash_comp = libexec/"shell-completion/bash/spring"
23+
zsh_comp = libexec/"shell-completion/zsh/_spring"
24+
25+
bash_completion.install bash_comp if bash_comp.exist?
26+
zsh_completion.install zsh_comp if zsh_comp.exist?
2327
end
2428
end

0 commit comments

Comments
 (0)