Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 12 additions & 2 deletions temporal-sdk/src/main/java/io/temporal/worker/Worker.java
Original file line number Diff line number Diff line change
Expand Up @@ -616,12 +616,22 @@ private static SingleWorkerOptions toWorkflowWorkerOptions(
maxConcurrentWorkflowTaskPollers = 2;
}

PollerBehavior pollerBehavior = options.getWorkflowTaskPollersBehavior();
if (pollerBehavior instanceof PollerBehaviorSimpleMaximum) {
if (((PollerBehaviorSimpleMaximum) pollerBehavior).getMaxConcurrentTaskPollers() == 1) {
log.warn(
"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",
pollerBehavior);
pollerBehavior = new PollerBehaviorSimpleMaximum(2);
}
}

return toSingleWorkerOptions(factoryOptions, options, clientOptions, contextPropagators)
.setPollerOptions(
PollerOptions.newBuilder()
.setPollerBehavior(
options.getWorkflowTaskPollersBehavior() != null
? options.getWorkflowTaskPollersBehavior()
pollerBehavior != null
? pollerBehavior
: new PollerBehaviorSimpleMaximum(maxConcurrentWorkflowTaskPollers))
.setUsingVirtualThreads(options.isUsingVirtualThreadsOnWorkflowWorker())
.build())
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -496,6 +496,10 @@ public Builder setDeploymentOptions(WorkerDeploymentOptions deploymentOptions) {
/**
* Set the poller behavior for workflow task pollers.
*
* <p>Note: If the poller behavior is set to {@link PollerBehaviorSimpleMaximum}, the maximum
* number of concurrent workflow task pollers must be at least 2 to account for the sticky and
* non-sticky task poller. If it is set to 1 it will be automatically adjusted to 2.
*
* <p>If the sticky queue is enabled, the poller behavior will be used for the sticky queue as
* well.
*/
Expand Down Expand Up @@ -866,34 +870,42 @@ public String getIdentity() {
return identity;
}

@Experimental
public boolean isUsingVirtualThreadsOnWorkflowWorker() {
return usingVirtualThreadsOnActivityWorker;
}

@Experimental
public boolean isUsingVirtualThreadsOnActivityWorker() {
return usingVirtualThreadsOnActivityWorker;
}

@Experimental
public boolean isUsingVirtualThreadsOnLocalActivityWorker() {
return usingVirtualThreadsOnLocalActivityWorker;
}

@Experimental
public boolean isUsingVirtualThreadsOnNexusWorker() {
return usingVirtualThreadsOnNexusWorker;
}

@Experimental
public WorkerDeploymentOptions getDeploymentOptions() {
return deploymentOptions;
}

@Experimental
public PollerBehavior getWorkflowTaskPollersBehavior() {
return workflowTaskPollersBehavior;
}

@Experimental
public PollerBehavior getActivityTaskPollersBehavior() {
return activityTaskPollersBehavior;
}

@Experimental
public PollerBehavior getNexusTaskPollersBehavior() {
return nexusTaskPollersBehavior;
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
package io.temporal.worker.tuning;

import io.temporal.common.Experimental;

/**
* Defines the behavior of a poller.
*
Expand All @@ -8,4 +10,5 @@
* PollerBehaviorSimpleMaximum}. For all intents and purpose this interface should be considered
* sealed.
*/
@Experimental
public interface PollerBehavior {}
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package io.temporal.worker.tuning;

import io.temporal.common.Experimental;
import java.util.Objects;

/**
Expand All @@ -9,6 +10,7 @@
* <p>If the server does not support autoscaling, then the number of pollers will stay at the
* initial number of pollers.
*/
@Experimental
public final class PollerBehaviorAutoscaling implements PollerBehavior {
private final int minConcurrentTaskPollers;
private final int maxConcurrentTaskPollers;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,13 @@
package io.temporal.worker.tuning;

import io.temporal.common.Experimental;
import java.util.Objects;

/**
* A poller behavior that will attempt to poll as long as a slot is available, up to the provided
* maximum. Cannot be less than two for workflow tasks, or one for other tasks.
*/
@Experimental
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't think this one really needs to be marked, but, not a big deal either way.

public class PollerBehaviorSimpleMaximum implements PollerBehavior {
private final int maxConcurrentTaskPollers;

Expand Down
Loading