Skip to content

Commit dce350c

Browse files
authored
Fix worker options default application overriding poller behavior (#2838)
1 parent 05ee827 commit dce350c

File tree

2 files changed

+36
-3
lines changed

2 files changed

+36
-3
lines changed

temporal-sdk/src/main/java/io/temporal/worker/WorkerOptions.java

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -646,13 +646,17 @@ public WorkerOptions validateAndBuildWithDefaults() {
646646
workerTuner,
647647
maxTaskQueueActivitiesPerSecond,
648648
maxConcurrentWorkflowTaskPollers == 0
649-
? DEFAULT_MAX_CONCURRENT_WORKFLOW_TASK_POLLERS
649+
? (workflowTaskPollersBehavior != null
650+
? 0
651+
: DEFAULT_MAX_CONCURRENT_WORKFLOW_TASK_POLLERS)
650652
: maxConcurrentWorkflowTaskPollers,
651653
maxConcurrentActivityTaskPollers == 0
652-
? DEFAULT_MAX_CONCURRENT_ACTIVITY_TASK_POLLERS
654+
? (activityTaskPollersBehavior != null
655+
? 0
656+
: DEFAULT_MAX_CONCURRENT_ACTIVITY_TASK_POLLERS)
653657
: maxConcurrentActivityTaskPollers,
654658
maxConcurrentNexusTaskPollers == 0
655-
? DEFAULT_MAX_CONCURRENT_NEXUS_TASK_POLLERS
659+
? (nexusTaskPollersBehavior != null ? 0 : DEFAULT_MAX_CONCURRENT_NEXUS_TASK_POLLERS)
656660
: maxConcurrentNexusTaskPollers,
657661
localActivityWorkerOnly,
658662
defaultDeadlockDetectionTimeout == 0

temporal-sdk/src/test/java/io/temporal/worker/WorkerOptionsTest.java

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -144,6 +144,35 @@ public void throwsIfResourceControllerIsNotSame() {
144144
nexusSlotSupplier));
145145
}
146146

147+
@Test
148+
public void validateAndBuildWithDefaultsDoesNotSetPollerDefaultsWhenBehaviorIsSet() {
149+
WorkerOptions options =
150+
WorkerOptions.newBuilder()
151+
.setWorkflowTaskPollersBehavior(new PollerBehaviorAutoscaling())
152+
.setActivityTaskPollersBehavior(new PollerBehaviorAutoscaling())
153+
.setNexusTaskPollersBehavior(new PollerBehaviorAutoscaling())
154+
.validateAndBuildWithDefaults();
155+
156+
assertEquals(0, options.getMaxConcurrentWorkflowTaskPollers());
157+
assertEquals(0, options.getMaxConcurrentActivityTaskPollers());
158+
assertEquals(0, options.getMaxConcurrentNexusTaskPollers());
159+
assertNotNull(options.getWorkflowTaskPollersBehavior());
160+
assertNotNull(options.getActivityTaskPollersBehavior());
161+
assertNotNull(options.getNexusTaskPollersBehavior());
162+
}
163+
164+
@Test
165+
public void validateAndBuildWithDefaultsIsIdempotentWithPollerBehavior() {
166+
WorkerOptions first =
167+
WorkerOptions.newBuilder()
168+
.setWorkflowTaskPollersBehavior(new PollerBehaviorAutoscaling())
169+
.validateAndBuildWithDefaults();
170+
WorkerOptions second = WorkerOptions.newBuilder(first).validateAndBuildWithDefaults();
171+
172+
assertEquals(0, second.getMaxConcurrentWorkflowTaskPollers());
173+
assertNotNull(second.getWorkflowTaskPollersBehavior());
174+
}
175+
147176
@Test
148177
public void verifyMaxTaskQueuePerSecondsDisablesEagerExecution() {
149178
// Verify that by default eager execution is enabled

0 commit comments

Comments
 (0)