@@ -27,6 +27,7 @@ import java.time.Duration
2727import java.time.OffsetDateTime
2828import java.time.temporal.ChronoUnit
2929import java.util.concurrent.Callable
30+ import java.util.concurrent.Executors
3031import java.util.concurrent.TimeUnit
3132import java.util.function.Predicate
3233
@@ -56,6 +57,7 @@ import nextflow.processor.Architecture
5657import nextflow.processor.TaskRun
5758import nextflow.script.bundle.ResourcesBundle
5859import nextflow.util.SysHelper
60+ import nextflow.util.Threads
5961import org.slf4j.Logger
6062import 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