in src/main/java/com/uber/cadence/worker/WorkerFactory.java [91:140]
public WorkerFactory(WorkflowClient workflowClient, WorkerFactoryOptions factoryOptions) {
this.workflowClient = Objects.requireNonNull(workflowClient);
this.factoryOptions =
MoreObjects.firstNonNull(factoryOptions, WorkerFactoryOptions.defaultInstance());
workflowThreadPool =
new ThreadPoolExecutor(
0,
this.factoryOptions.getMaxWorkflowThreadCount(),
1,
TimeUnit.SECONDS,
new SynchronousQueue<>());
workflowThreadPool.setThreadFactory(
r -> new Thread(r, "workflow-thread-" + workflowThreadCounter.incrementAndGet()));
if (this.factoryOptions.isDisableStickyExecution()) {
return;
}
Scope stickyScope =
workflowClient
.getOptions()
.getMetricsScope()
.tagged(
ImmutableMap.of(
MetricsTag.DOMAIN,
workflowClient.getOptions().getDomain(),
MetricsTag.TASK_LIST,
STICKY_TASK_LIST_METRIC_TAG));
this.cache = new DeciderCache(this.factoryOptions.getCacheMaximumSize(), stickyScope);
dispatcher = new PollDecisionTaskDispatcher(workflowClient.getService());
stickyPoller =
new Poller<>(
workflowClient.getOptions().getIdentity(),
new WorkflowPollTaskFactory(
workflowClient.getService(),
workflowClient.getOptions().getDomain(),
getStickyTaskListName(),
TaskListKind.TASK_LIST_KIND_STICKY,
stickyScope,
workflowClient.getOptions().getIdentity())
.get(),
dispatcher,
PollerOptions.newBuilder()
.setPollThreadNamePrefix(POLL_THREAD_NAME)
.setPollThreadCount(this.factoryOptions.getStickyPollerCount())
.build(),
stickyScope);
}