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