Skip to content

Commit e6e0867

Browse files
Make sure PollerBehavior is marked as Experimental (#2569)
1 parent 4a05f51 commit e6e0867

File tree

5 files changed

+31
-2
lines changed

5 files changed

+31
-2
lines changed

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

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -616,12 +616,22 @@ private static SingleWorkerOptions toWorkflowWorkerOptions(
616616
maxConcurrentWorkflowTaskPollers = 2;
617617
}
618618

619+
PollerBehavior pollerBehavior = options.getWorkflowTaskPollersBehavior();
620+
if (pollerBehavior instanceof PollerBehaviorSimpleMaximum) {
621+
if (((PollerBehaviorSimpleMaximum) pollerBehavior).getMaxConcurrentTaskPollers() == 1) {
622+
log.warn(
623+
"WorkerOptions.Builder#setWorkflowTaskPollersBehavior was set to {}. This is an illegal value. The number of Workflow Task Pollers is forced to 2. See documentation on WorkerOptions.Builder#setWorkflowTaskPollersBehavior",
624+
pollerBehavior);
625+
pollerBehavior = new PollerBehaviorSimpleMaximum(2);
626+
}
627+
}
628+
619629
return toSingleWorkerOptions(factoryOptions, options, clientOptions, contextPropagators)
620630
.setPollerOptions(
621631
PollerOptions.newBuilder()
622632
.setPollerBehavior(
623-
options.getWorkflowTaskPollersBehavior() != null
624-
? options.getWorkflowTaskPollersBehavior()
633+
pollerBehavior != null
634+
? pollerBehavior
625635
: new PollerBehaviorSimpleMaximum(maxConcurrentWorkflowTaskPollers))
626636
.setUsingVirtualThreads(options.isUsingVirtualThreadsOnWorkflowWorker())
627637
.build())

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

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -496,6 +496,10 @@ public Builder setDeploymentOptions(WorkerDeploymentOptions deploymentOptions) {
496496
/**
497497
* Set the poller behavior for workflow task pollers.
498498
*
499+
* <p>Note: If the poller behavior is set to {@link PollerBehaviorSimpleMaximum}, the maximum
500+
* number of concurrent workflow task pollers must be at least 2 to account for the sticky and
501+
* non-sticky task poller. If it is set to 1 it will be automatically adjusted to 2.
502+
*
499503
* <p>If the sticky queue is enabled, the poller behavior will be used for the sticky queue as
500504
* well.
501505
*/
@@ -866,34 +870,42 @@ public String getIdentity() {
866870
return identity;
867871
}
868872

873+
@Experimental
869874
public boolean isUsingVirtualThreadsOnWorkflowWorker() {
870875
return usingVirtualThreadsOnActivityWorker;
871876
}
872877

878+
@Experimental
873879
public boolean isUsingVirtualThreadsOnActivityWorker() {
874880
return usingVirtualThreadsOnActivityWorker;
875881
}
876882

883+
@Experimental
877884
public boolean isUsingVirtualThreadsOnLocalActivityWorker() {
878885
return usingVirtualThreadsOnLocalActivityWorker;
879886
}
880887

888+
@Experimental
881889
public boolean isUsingVirtualThreadsOnNexusWorker() {
882890
return usingVirtualThreadsOnNexusWorker;
883891
}
884892

893+
@Experimental
885894
public WorkerDeploymentOptions getDeploymentOptions() {
886895
return deploymentOptions;
887896
}
888897

898+
@Experimental
889899
public PollerBehavior getWorkflowTaskPollersBehavior() {
890900
return workflowTaskPollersBehavior;
891901
}
892902

903+
@Experimental
893904
public PollerBehavior getActivityTaskPollersBehavior() {
894905
return activityTaskPollersBehavior;
895906
}
896907

908+
@Experimental
897909
public PollerBehavior getNexusTaskPollersBehavior() {
898910
return nexusTaskPollersBehavior;
899911
}

temporal-sdk/src/main/java/io/temporal/worker/tuning/PollerBehavior.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package io.temporal.worker.tuning;
22

3+
import io.temporal.common.Experimental;
4+
35
/**
46
* Defines the behavior of a poller.
57
*
@@ -8,4 +10,5 @@
810
* PollerBehaviorSimpleMaximum}. For all intents and purpose this interface should be considered
911
* sealed.
1012
*/
13+
@Experimental
1114
public interface PollerBehavior {}

temporal-sdk/src/main/java/io/temporal/worker/tuning/PollerBehaviorAutoscaling.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package io.temporal.worker.tuning;
22

3+
import io.temporal.common.Experimental;
34
import java.util.Objects;
45

56
/**
@@ -9,6 +10,7 @@
910
* <p>If the server does not support autoscaling, then the number of pollers will stay at the
1011
* initial number of pollers.
1112
*/
13+
@Experimental
1214
public final class PollerBehaviorAutoscaling implements PollerBehavior {
1315
private final int minConcurrentTaskPollers;
1416
private final int maxConcurrentTaskPollers;

temporal-sdk/src/main/java/io/temporal/worker/tuning/PollerBehaviorSimpleMaximum.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
11
package io.temporal.worker.tuning;
22

3+
import io.temporal.common.Experimental;
34
import java.util.Objects;
45

56
/**
67
* A poller behavior that will attempt to poll as long as a slot is available, up to the provided
78
* maximum. Cannot be less than two for workflow tasks, or one for other tasks.
89
*/
10+
@Experimental
911
public class PollerBehaviorSimpleMaximum implements PollerBehavior {
1012
private final int maxConcurrentTaskPollers;
1113

0 commit comments

Comments
 (0)