Skip to content

App Configuration

The Conductor application server offers extensive customization options to optimize its operation for specific environments.

These configuration parameters allow fine-tuning of various aspects of the server's behavior, performance, and integration capabilities. All of these parameters are grouped under the conductor.app namespace.

Configuration

Field Type Description Notes
stack String Name of the stack within which the app is running. e.g. devint, testintg, staging, prod etc. Default is "test"
appId String The ID with which the app has been registered. e.g. conductor, myApp Default is "conductor"
executorServiceMaxThreadCount int The maximum number of threads to be allocated to the executor service threadpool. e.g. 50 Default is 50
workflowOffsetTimeout Duration The timeout duration to set when a workflow is pushed to the decider queue. Example: 30s or 1m Default is 30 seconds
maxPostponeDurationSeconds Duration The maximum timeout duration to set when a workflow with running task is pushed to the decider queue. Example: 30m or 1h Default is 3600 seconds
sweeperThreadCount int The number of threads to use for background sweeping on active workflows. Example: 8 if there are 4 processors (2x4) Default is 2 times the number of available processors
sweeperWorkflowPollTimeout Duration The timeout for polling workflows to be swept. Example: 2000ms or 2s Default is 2000 milliseconds
eventProcessorThreadCount int The number of threads to configure the threadpool in the event processor. Example: 4 Default is 2
eventMessageIndexingEnabled boolean Whether to enable indexing of messages within event payloads. Example: true or false Default is true
eventExecutionIndexingEnabled boolean Whether to enable indexing of event execution results. Example: true or false Default is true
workflowExecutionLockEnabled boolean Whether to enable the workflow execution lock. Example: true or false Default is false
lockLeaseTime Duration The time for which the lock is leased. Example: 60000ms or 1m Default is 60000 milliseconds
lockTimeToTry Duration The time for which the thread will block in an attempt to acquire the lock. Example: 500ms or 1s Default is 500 milliseconds
activeWorkerLastPollTimeout Duration The time to consider if a worker is actively polling for a task. Example: 10s Default is 10 seconds
taskExecutionPostponeDuration Duration The time for which a task execution will be postponed if rate-limited or concurrent execution limited. Example: 60s Default is 60 seconds
taskIndexingEnabled boolean Whether to enable indexing of tasks. Example: true or false Default is true
taskExecLogIndexingEnabled boolean Whether to enable indexing of task execution logs. Example: true or false Default is true
asyncIndexingEnabled boolean Whether to enable asynchronous indexing to Elasticsearch. Example: true or false Default is false
systemTaskWorkerThreadCount int The number of threads in the threadpool for system task workers. Example: 8 if there are 4 processors (2x4) Default is 2 times the number of available processors
systemTaskMaxPollCount int The maximum number of threads to be polled within the threadpool for system task workers. Example: 8 Default is equal to systemTaskWorkerThreadCount
systemTaskWorkerCallbackDuration Duration The interval after which a system task will be checked by the system task worker for completion. Example: 30s Default is 30 seconds
systemTaskWorkerPollInterval Duration The interval at which system task queues will be polled by system task workers. Example: 50ms Default is 50 milliseconds
systemTaskWorkerExecutionNamespace String The namespace for the system task workers to provide instance-level isolation. Example: namespace1, namespace2 Default is an empty string
isolatedSystemTaskWorkerThreadCount int The number of threads to be used within the threadpool for system task workers in each isolation group. Example: 4 Default is 1
asyncUpdateShortRunningWorkflowDuration Duration The duration of workflow execution qualifying as short-running when async indexing to Elasticsearch is enabled. Example: 30s Default is 30 seconds
asyncUpdateDelay Duration The delay with which short-running workflows will be updated in Elasticsearch when async indexing is enabled. Example: 60s Default is 60 seconds
ownerEmailMandatory boolean Whether to validate the owner email field as mandatory within workflow and task definitions. Example: true or false Default is true
eventQueueSchedulerPollThreadCount int The number of threads used in the Scheduler for polling events from multiple event queues. Example: 8 if there are 4 processors (2x4) Default is equal to the number of available processors
eventQueuePollInterval Duration The time interval at which the default event queues will be polled. Example: 100ms Default is 100 milliseconds
eventQueuePollCount int The number of messages to be polled from a default event queue in a single operation. Example: 10 Default is 10
eventQueueLongPollTimeout Duration The timeout for the poll operation on the default event queue. Example: 1000ms Default is 1000 milliseconds
workflowInputPayloadSizeThreshold DataSize The threshold of the workflow input payload size beyond which the payload will be stored in ExternalPayloadStorage. Example: 5120KB Default is 5120 kilobytes
maxWorkflowInputPayloadSizeThreshold DataSize The maximum threshold of the workflow input payload size beyond which input will be rejected and the workflow marked as FAILED. Example: 10240KB Default is 10240 kilobytes
workflowOutputPayloadSizeThreshold DataSize The threshold of the workflow output payload size beyond which the payload will be stored in ExternalPayloadStorage. Example: 5120KB Default is 5120 kilobytes
maxWorkflowOutputPayloadSizeThreshold DataSize The maximum threshold of the workflow output payload size beyond which output will be rejected and the workflow marked as FAILED. Example: 10240KB Default is 10240 kilobytes
taskInputPayloadSizeThreshold DataSize The threshold of the task input payload size beyond which the payload will be stored in ExternalPayloadStorage. Example: 3072KB Default is 3072 kilobytes
maxTaskInputPayloadSizeThreshold DataSize The maximum threshold of the task input payload size beyond which the task input will be rejected and the task marked as FAILED_WITH_TERMINAL_ERROR. Example: 10240KB Default is 10240 kilobytes
taskOutputPayloadSizeThreshold DataSize The threshold of the task output payload size beyond which the payload will be stored in ExternalPayloadStorage. Example: 3072KB Default is 3072 kilobytes
maxTaskOutputPayloadSizeThreshold DataSize The maximum threshold of the task output payload size beyond which the task output will be rejected and the task marked as FAILED_WITH_TERMINAL_ERROR. Example: 10240KB Default is 10240 kilobytes
maxWorkflowVariablesPayloadSizeThreshold DataSize The maximum threshold of the workflow variables payload size beyond which the task changes will be rejected and the task marked as FAILED_WITH_TERMINAL_ERROR. Example: 256KB Default is 256 kilobytes
taskExecLogSizeLimit int The maximum size of task execution logs. Example: 10000 Default is 10

Example usage

In your configuration file add the configuration as you need

# Conductor App Configuration

# Name of the stack within which the app is running. e.g. devint, testintg, staging, prod etc.
conductor.app.stack=test

# The ID with which the app has been registered. e.g. conductor, myApp
conductor.app.appId=conductor

# The maximum number of threads to be allocated to the executor service threadpool. e.g. 50
conductor.app.executorServiceMaxThreadCount=50

# The timeout duration to set when a workflow is pushed to the decider queue. Example: 30s or 1m
conductor.app.workflowOffsetTimeout=30s

# The number of threads to use for background sweeping on active workflows. Example: 8 if there are 4 processors (2x4)
conductor.app.sweeperThreadCount=8

# The timeout for polling workflows to be swept. Example: 2000ms or 2s
conductor.app.sweeperWorkflowPollTimeout=2000ms

# The number of threads to configure the threadpool in the event processor. Example: 4
conductor.app.eventProcessorThreadCount=4

# Whether to enable indexing of messages within event payloads. Example: true or false
conductor.app.eventMessageIndexingEnabled=true

# Whether to enable indexing of event execution results. Example: true or false
conductor.app.eventExecutionIndexingEnabled=true

# Whether to enable the workflow execution lock. Example: true or false
conductor.app.workflowExecutionLockEnabled=false

# The time for which the lock is leased. Example: 60000ms or 1m
conductor.app.lockLeaseTime=60000ms

# The time for which the thread will block in an attempt to acquire the lock. Example: 500ms or 1s
conductor.app.lockTimeToTry=500ms

# The time to consider if a worker is actively polling for a task. Example: 10s
conductor.app.activeWorkerLastPollTimeout=10s

# The time for which a task execution will be postponed if rate-limited or concurrent execution limited. Example: 60s
conductor.app.taskExecutionPostponeDuration=60s

# Whether to enable indexing of tasks. Example: true or false
conductor.app.taskIndexingEnabled=true

# Whether to enable indexing of task execution logs. Example: true or false
conductor.app.taskExecLogIndexingEnabled=true

# Whether to enable asynchronous indexing to Elasticsearch. Example: true or false
conductor.app.asyncIndexingEnabled=false

# The number of threads in the threadpool for system task workers. Example: 8 if there are 4 processors (2x4)
conductor.app.systemTaskWorkerThreadCount=8

# The maximum number of threads to be polled within the threadpool for system task workers. Example: 8
conductor.app.systemTaskMaxPollCount=8

# The interval after which a system task will be checked by the system task worker for completion. Example: 30s
conductor.app.systemTaskWorkerCallbackDuration=30s

# The interval at which system task queues will be polled by system task workers. Example: 50ms
conductor.app.systemTaskWorkerPollInterval=50ms

# The namespace for the system task workers to provide instance-level isolation. Example: namespace1, namespace2
conductor.app.systemTaskWorkerExecutionNamespace=

# The number of threads to be used within the threadpool for system task workers in each isolation group. Example: 4
conductor.app.isolatedSystemTaskWorkerThreadCount=4

# The duration of workflow execution qualifying as short-running when async indexing to Elasticsearch is enabled. Example: 30s
conductor.app.asyncUpdateShortRunningWorkflowDuration=30s

# The delay with which short-running workflows will be updated in Elasticsearch when async indexing is enabled. Example: 60s
conductor.app.asyncUpdateDelay=60s

# Whether to validate the owner email field as mandatory within workflow and task definitions. Example: true or false
conductor.app.ownerEmailMandatory=true

# The number of threads used in the Scheduler for polling events from multiple event queues. Example: 8 if there are 4 processors (2x4)
conductor.app.eventQueueSchedulerPollThreadCount=8

# The time interval at which the default event queues will be polled. Example: 100ms
conductor.app.eventQueuePollInterval=100ms

# The number of messages to be polled from a default event queue in a single operation. Example: 10
conductor.app.eventQueuePollCount=10

# The timeout for the poll operation on the default event queue. Example: 1000ms
conductor.app.eventQueueLongPollTimeout=1000ms

# The threshold of the workflow input payload size beyond which the payload will be stored in ExternalPayloadStorage. Example: 5120KB
conductor.app.workflowInputPayloadSizeThreshold=5120KB

# The maximum threshold of the workflow input payload size beyond which input will be rejected and the workflow marked as FAILED. Example: 10240KB
conductor.app.maxWorkflowInputPayloadSizeThreshold=10240KB

# The threshold of the workflow output payload size beyond which the payload will be stored in ExternalPayloadStorage. Example: 5120KB
conductor.app.workflowOutputPayloadSizeThreshold=5120KB

# The maximum threshold of the workflow output payload size beyond which output will be rejected and the workflow marked as FAILED. Example: 10240KB
conductor.app.maxWorkflowOutputPayloadSizeThreshold=10240KB

# The threshold of the task input payload size beyond which the payload will be stored in ExternalPayloadStorage. Example: 3072KB
conductor.app.taskInputPayloadSizeThreshold=3072KB

# The maximum threshold of the task input payload size beyond which the task input will be rejected and the task marked as FAILED_WITH_TERMINAL_ERROR. Example: 10240KB
conductor.app.maxTaskInputPayloadSizeThreshold=10240KB

# The threshold of the task output payload size beyond which the payload will be stored in ExternalPayloadStorage. Example: 3072KB
conductor.app.taskOutputPayloadSizeThreshold=3072KB

# The maximum threshold of the task output payload size beyond which the task output will be rejected and the task marked as FAILED_WITH_TERMINAL_ERROR. Example: 10240KB
conductor.app.maxTaskOutputPayloadSizeThreshold=10240KB

# The maximum threshold of the workflow variables payload size beyond which the task changes will be rejected and the task marked as FAILED_WITH_TERMINAL_ERROR. Example: 256KB
conductor.app.maxWorkflowVariablesPayloadSizeThreshold=256KB

# The maximum size of task execution logs. Example: 10000
conductor.app.taskExecLogSizeLimit=10000