aboutsummaryrefslogtreecommitdiffstats
path: root/subprojects/language-web
diff options
context:
space:
mode:
authorLibravatar Kristóf Marussy <kristof@marussy.com>2022-11-26 01:12:33 +0100
committerLibravatar Kristóf Marussy <kristof@marussy.com>2022-12-09 00:07:38 +0100
commit5f8a34454a289ba4408d19bef5d5387c78ac36c2 (patch)
tree41dc5a121c822589cfba0db3caad99a53f006c2d /subprojects/language-web
parentrefactor(frontend): simplify diagnostic tracking (diff)
downloadrefinery-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')
-rw-r--r--subprojects/language-web/build.gradle14
-rw-r--r--subprojects/language-web/src/main/java/tools/refinery/language/web/ServerLauncher.java9
-rw-r--r--subprojects/language-web/src/test/java/tools/refinery/language/web/ProblemWebSocketServletIntegrationTest.java1
-rw-r--r--subprojects/language-web/src/test/java/tools/refinery/language/web/tests/AwaitTerminationExecutorServiceProvider.java4
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
41mainClassName = 'tools.refinery.language.web.ServerLauncher' 41mainClassName = 'tools.refinery.language.web.ServerLauncher'
42 42
43// Enable JDK 19 preview features for virtual thread support.
44application {
45 applicationDefaultJvmArgs += '--enable-preview'
46}
47tasks.withType(JavaCompile) {
48 options.release = 19
49 options.compilerArgs += '--enable-preview'
50}
51tasks.withType(Test) {
52 jvmArgs += '--enable-preview'
53}
54
43tasks.named('jar') { 55tasks.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 @@
1package tools.refinery.language.web.tests; 1package tools.refinery.language.web.tests;
2 2
3import com.google.inject.Singleton; 3import com.google.inject.Singleton;
4import org.eclipse.xtext.ide.ExecutorServiceProvider; 4import tools.refinery.language.web.xtext.VirtualThreadExecutorServiceProvider;
5 5
6import java.util.ArrayList; 6import java.util.ArrayList;
7import java.util.List; 7import java.util.List;
8import java.util.concurrent.ExecutorService; 8import java.util.concurrent.ExecutorService;
9 9
10@Singleton 10@Singleton
11public class AwaitTerminationExecutorServiceProvider extends ExecutorServiceProvider { 11public 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