From 4d68e2e35c5c1d492f4839fb596a95072e8ca386 Mon Sep 17 00:00:00 2001 From: geraldw-ai Date: Mon, 20 Jul 2026 17:28:52 -0700 Subject: [PATCH] WorkerOptions.Builder.isUsingVirtualThreadsOnWorkflowWorker was returning the wrong field --- .../io/temporal/worker/WorkerOptions.java | 2 +- .../io/temporal/worker/WorkerOptionsTest.java | 40 +++++++++++++++++++ 2 files changed, 41 insertions(+), 1 deletion(-) diff --git a/temporal-sdk/src/main/java/io/temporal/worker/WorkerOptions.java b/temporal-sdk/src/main/java/io/temporal/worker/WorkerOptions.java index 4e351cb74..279c56926 100644 --- a/temporal-sdk/src/main/java/io/temporal/worker/WorkerOptions.java +++ b/temporal-sdk/src/main/java/io/temporal/worker/WorkerOptions.java @@ -920,7 +920,7 @@ public String getIdentity() { } public boolean isUsingVirtualThreadsOnWorkflowWorker() { - return usingVirtualThreadsOnActivityWorker; + return usingVirtualThreadsOnWorkflowWorker; } public boolean isUsingVirtualThreadsOnActivityWorker() { diff --git a/temporal-sdk/src/test/java/io/temporal/worker/WorkerOptionsTest.java b/temporal-sdk/src/test/java/io/temporal/worker/WorkerOptionsTest.java index 877f6fdce..f21345a30 100644 --- a/temporal-sdk/src/test/java/io/temporal/worker/WorkerOptionsTest.java +++ b/temporal-sdk/src/test/java/io/temporal/worker/WorkerOptionsTest.java @@ -181,6 +181,46 @@ public void validateAndBuildWithDefaultsIsIdempotentWithPollerBehavior() { assertNotNull(second.getWorkflowTaskPollersBehavior()); } + @Test + public void setUsingVirtualThreadsEnablesAllWorkers() { + WorkerOptions options = WorkerOptions.newBuilder().setUsingVirtualThreads(true).build(); + assertTrue(options.isUsingVirtualThreadsOnWorkflowWorker()); + assertTrue(options.isUsingVirtualThreadsOnActivityWorker()); + assertTrue(options.isUsingVirtualThreadsOnLocalActivityWorker()); + assertTrue(options.isUsingVirtualThreadsOnNexusWorker()); + } + + @Test + public void perWorkerVirtualThreadOptionsAreIndependent() { + WorkerOptions workflowOnly = + WorkerOptions.newBuilder().setUsingVirtualThreadsOnWorkflowWorker(true).build(); + assertTrue(workflowOnly.isUsingVirtualThreadsOnWorkflowWorker()); + assertFalse(workflowOnly.isUsingVirtualThreadsOnActivityWorker()); + assertFalse(workflowOnly.isUsingVirtualThreadsOnLocalActivityWorker()); + assertFalse(workflowOnly.isUsingVirtualThreadsOnNexusWorker()); + + WorkerOptions activityOnly = + WorkerOptions.newBuilder().setUsingVirtualThreadsOnActivityWorker(true).build(); + assertFalse(activityOnly.isUsingVirtualThreadsOnWorkflowWorker()); + assertTrue(activityOnly.isUsingVirtualThreadsOnActivityWorker()); + assertFalse(activityOnly.isUsingVirtualThreadsOnLocalActivityWorker()); + assertFalse(activityOnly.isUsingVirtualThreadsOnNexusWorker()); + + WorkerOptions localActivityOnly = + WorkerOptions.newBuilder().setUsingVirtualThreadsOnLocalActivityWorker(true).build(); + assertFalse(localActivityOnly.isUsingVirtualThreadsOnWorkflowWorker()); + assertFalse(localActivityOnly.isUsingVirtualThreadsOnActivityWorker()); + assertTrue(localActivityOnly.isUsingVirtualThreadsOnLocalActivityWorker()); + assertFalse(localActivityOnly.isUsingVirtualThreadsOnNexusWorker()); + + WorkerOptions nexusOnly = + WorkerOptions.newBuilder().setUsingVirtualThreadsOnNexusWorker(true).build(); + assertFalse(nexusOnly.isUsingVirtualThreadsOnWorkflowWorker()); + assertFalse(nexusOnly.isUsingVirtualThreadsOnActivityWorker()); + assertFalse(nexusOnly.isUsingVirtualThreadsOnLocalActivityWorker()); + assertTrue(nexusOnly.isUsingVirtualThreadsOnNexusWorker()); + } + @Test public void verifyMaxTaskQueuePerSecondsDisablesEagerExecution() { // Verify that by default eager execution is enabled