diff options
author | Kristóf Marussy <kristof@marussy.com> | 2022-11-26 01:12:33 +0100 |
---|---|---|
committer | Kristóf Marussy <kristof@marussy.com> | 2022-12-09 00:07:38 +0100 |
commit | 5f8a34454a289ba4408d19bef5d5387c78ac36c2 (patch) | |
tree | 41dc5a121c822589cfba0db3caad99a53f006c2d /subprojects/language-web | |
parent | refactor(frontend): simplify diagnostic tracking (diff) | |
download | refinery-5f8a34454a289ba4408d19bef5d5387c78ac36c2.tar.gz refinery-5f8a34454a289ba4408d19bef5d5387c78ac36c2.tar.zst refinery-5f8a34454a289ba4408d19bef5d5387c78ac36c2.zip |
refactor: be more conservative w/preview features
Also test with virtual threads in we are using them in production.
Diffstat (limited to 'subprojects/language-web')
4 files changed, 26 insertions, 2 deletions
diff --git a/subprojects/language-web/build.gradle b/subprojects/language-web/build.gradle index 9c1d93f3..8d277a5b 100644 --- a/subprojects/language-web/build.gradle +++ b/subprojects/language-web/build.gradle | |||
@@ -40,6 +40,18 @@ for (taskName in ['compileJava', 'processResources']) { | |||
40 | 40 | ||
41 | mainClassName = 'tools.refinery.language.web.ServerLauncher' | 41 | mainClassName = 'tools.refinery.language.web.ServerLauncher' |
42 | 42 | ||
43 | // Enable JDK 19 preview features for virtual thread support. | ||
44 | application { | ||
45 | applicationDefaultJvmArgs += '--enable-preview' | ||
46 | } | ||
47 | tasks.withType(JavaCompile) { | ||
48 | options.release = 19 | ||
49 | options.compilerArgs += '--enable-preview' | ||
50 | } | ||
51 | tasks.withType(Test) { | ||
52 | jvmArgs += '--enable-preview' | ||
53 | } | ||
54 | |||
43 | tasks.named('jar') { | 55 | tasks.named('jar') { |
44 | dependsOn project.configurations.webapp | 56 | dependsOn project.configurations.webapp |
45 | from(project.configurations.webapp) { | 57 | from(project.configurations.webapp) { |
@@ -65,6 +77,8 @@ tasks.register('serveBackend', JavaExec) { | |||
65 | dependsOn sourceSets.main.runtimeClasspath | 77 | dependsOn sourceSets.main.runtimeClasspath |
66 | classpath = sourceSets.main.runtimeClasspath | 78 | classpath = sourceSets.main.runtimeClasspath |
67 | mainClass = mainClassName | 79 | mainClass = mainClassName |
80 | // Enable JDK 19 preview features for virtual thread support. | ||
81 | jvmArgs += '--enable-preview' | ||
68 | standardInput = System.in | 82 | standardInput = System.in |
69 | def baseResource = project.configurations.webapp.incoming.artifacts.artifactFiles.first() | 83 | def baseResource = project.configurations.webapp.incoming.artifacts.artifactFiles.first() |
70 | environment BASE_RESOURCE: baseResource | 84 | environment BASE_RESOURCE: baseResource |
diff --git a/subprojects/language-web/src/main/java/tools/refinery/language/web/ServerLauncher.java b/subprojects/language-web/src/main/java/tools/refinery/language/web/ServerLauncher.java index 5da16850..960eef71 100644 --- a/subprojects/language-web/src/main/java/tools/refinery/language/web/ServerLauncher.java +++ b/subprojects/language-web/src/main/java/tools/refinery/language/web/ServerLauncher.java | |||
@@ -45,6 +45,7 @@ public class ServerLauncher { | |||
45 | 45 | ||
46 | public ServerLauncher(InetSocketAddress bindAddress, String[] allowedOrigins, String webSocketUrl) { | 46 | public ServerLauncher(InetSocketAddress bindAddress, String[] allowedOrigins, String webSocketUrl) { |
47 | server = new Server(bindAddress); | 47 | server = new Server(bindAddress); |
48 | enableVirtualThreads(server); | ||
48 | if (server.getThreadPool() instanceof VirtualThreads.Configurable virtualThreadsConfigurable) { | 49 | if (server.getThreadPool() instanceof VirtualThreads.Configurable virtualThreadsConfigurable) { |
49 | // Change this to setVirtualThreadsExecutor once | 50 | // Change this to setVirtualThreadsExecutor once |
50 | // https://github.com/eclipse/jetty.project/commit/83154b4ffe4767ef44981598d6c26e6a5d32e57c gets released. | 51 | // https://github.com/eclipse/jetty.project/commit/83154b4ffe4767ef44981598d6c26e6a5d32e57c gets released. |
@@ -149,6 +150,14 @@ public class ServerLauncher { | |||
149 | } | 150 | } |
150 | } | 151 | } |
151 | 152 | ||
153 | public static void enableVirtualThreads(Server server) { | ||
154 | if (server.getThreadPool() instanceof VirtualThreads.Configurable virtualThreadsConfigurable) { | ||
155 | // Change this to setVirtualThreadsExecutor once | ||
156 | // https://github.com/eclipse/jetty.project/commit/83154b4ffe4767ef44981598d6c26e6a5d32e57c gets released. | ||
157 | virtualThreadsConfigurable.setUseVirtualThreads(VirtualThreads.areSupported()); | ||
158 | } | ||
159 | } | ||
160 | |||
152 | private static String getListenAddress() { | 161 | private static String getListenAddress() { |
153 | var listenAddress = System.getenv("LISTEN_ADDRESS"); | 162 | var listenAddress = System.getenv("LISTEN_ADDRESS"); |
154 | if (listenAddress == null) { | 163 | if (listenAddress == null) { |
diff --git a/subprojects/language-web/src/test/java/tools/refinery/language/web/ProblemWebSocketServletIntegrationTest.java b/subprojects/language-web/src/test/java/tools/refinery/language/web/ProblemWebSocketServletIntegrationTest.java index 6dfce780..24fab4e3 100644 --- a/subprojects/language-web/src/test/java/tools/refinery/language/web/ProblemWebSocketServletIntegrationTest.java +++ b/subprojects/language-web/src/test/java/tools/refinery/language/web/ProblemWebSocketServletIntegrationTest.java | |||
@@ -177,6 +177,7 @@ class ProblemWebSocketServletIntegrationTest { | |||
177 | 177 | ||
178 | private void startServer(String allowedOrigins) { | 178 | private void startServer(String allowedOrigins) { |
179 | server = new Server(new InetSocketAddress(SERVER_PORT)); | 179 | server = new Server(new InetSocketAddress(SERVER_PORT)); |
180 | ServerLauncher.enableVirtualThreads(server); | ||
180 | var handler = new ServletContextHandler(); | 181 | var handler = new ServletContextHandler(); |
181 | var holder = new ServletHolder(ProblemWebSocketServlet.class); | 182 | var holder = new ServletHolder(ProblemWebSocketServlet.class); |
182 | if (allowedOrigins != null) { | 183 | if (allowedOrigins != null) { |
diff --git a/subprojects/language-web/src/test/java/tools/refinery/language/web/tests/AwaitTerminationExecutorServiceProvider.java b/subprojects/language-web/src/test/java/tools/refinery/language/web/tests/AwaitTerminationExecutorServiceProvider.java index ebf36f13..25343109 100644 --- a/subprojects/language-web/src/test/java/tools/refinery/language/web/tests/AwaitTerminationExecutorServiceProvider.java +++ b/subprojects/language-web/src/test/java/tools/refinery/language/web/tests/AwaitTerminationExecutorServiceProvider.java | |||
@@ -1,14 +1,14 @@ | |||
1 | package tools.refinery.language.web.tests; | 1 | package tools.refinery.language.web.tests; |
2 | 2 | ||
3 | import com.google.inject.Singleton; | 3 | import com.google.inject.Singleton; |
4 | import org.eclipse.xtext.ide.ExecutorServiceProvider; | 4 | import tools.refinery.language.web.xtext.VirtualThreadExecutorServiceProvider; |
5 | 5 | ||
6 | import java.util.ArrayList; | 6 | import java.util.ArrayList; |
7 | import java.util.List; | 7 | import java.util.List; |
8 | import java.util.concurrent.ExecutorService; | 8 | import java.util.concurrent.ExecutorService; |
9 | 9 | ||
10 | @Singleton | 10 | @Singleton |
11 | public class AwaitTerminationExecutorServiceProvider extends ExecutorServiceProvider { | 11 | public class AwaitTerminationExecutorServiceProvider extends VirtualThreadExecutorServiceProvider { |
12 | private final List<RestartableCachedThreadPool> servicesToShutDown = new ArrayList<>(); | 12 | private final List<RestartableCachedThreadPool> servicesToShutDown = new ArrayList<>(); |
13 | 13 | ||
14 | @Override | 14 | @Override |