Skip to content

Commit dd32f80

Browse files
committed
Allow use virtual threads in Wave client
Signed-off-by: Paolo Di Tommaso <[email protected]>
1 parent 077ed5d commit dd32f80

File tree

1 file changed

+12
-2
lines changed

1 file changed

+12
-2
lines changed

plugins/nf-wave/src/main/io/seqera/wave/plugin/WaveClient.groovy

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ import java.time.Duration
2727
import java.time.OffsetDateTime
2828
import java.time.temporal.ChronoUnit
2929
import java.util.concurrent.Callable
30+
import java.util.concurrent.Executors
3031
import java.util.concurrent.TimeUnit
3132
import java.util.function.Predicate
3233

@@ -56,6 +57,7 @@ import nextflow.processor.Architecture
5657
import nextflow.processor.TaskRun
5758
import nextflow.script.bundle.ResourcesBundle
5859
import nextflow.util.SysHelper
60+
import nextflow.util.Threads
5961
import org.slf4j.Logger
6062
import org.slf4j.LoggerFactory
6163
/**
@@ -127,12 +129,20 @@ class WaveClient {
127129
// the cookie manager
128130
cookieManager = new CookieManager()
129131
// create http client
130-
this.httpClient = HttpClient.newBuilder()
132+
this.httpClient = newHttpClient()
133+
}
134+
135+
protected HttpClient newHttpClient() {
136+
final builder = HttpClient.newBuilder()
131137
.version(HttpClient.Version.HTTP_1_1)
132138
.followRedirects(HttpClient.Redirect.NEVER)
133139
.cookieHandler(cookieManager)
134140
.connectTimeout(config.httpOpts().connectTimeout())
135-
.build()
141+
// use virtual threads executor if enabled
142+
if( Threads.useVirtual() )
143+
builder.executor(Executors.newVirtualThreadPerTaskExecutor())
144+
// build and return the new client
145+
return builder.build()
136146
}
137147

138148
WaveConfig config() { return config }

0 commit comments

Comments
 (0)