conductor-oss/conductor · critical · IllegalStateException
Cannot set event processor thread count to <=0. To disable e
Error message
Cannot set event processor thread count to <=0. To disable event processing, set conductor.default-event-processor.enabled=false.
What it means
Thrown by the DefaultEventProcessor constructor when properties.getEventProcessorThreadCount() <= 0. The processor runs event-handler actions on a fixed thread pool; a non-positive size is invalid. The message itself tells you the supported way to disable the processor: set conductor.default-event-processor.enabled=false rather than zeroing the thread count.
Source
Thrown at core/src/main/java/com/netflix/conductor/core/events/DefaultEventProcessor.java:97
public DefaultEventProcessor(
ExecutionService executionService,
MetadataService metadataService,
ActionProcessor actionProcessor,
JsonUtils jsonUtils,
ConductorProperties properties,
ObjectMapper objectMapper,
Map<String, Evaluator> evaluators,
@Qualifier("onTransientErrorRetryTemplate") RetryTemplate retryTemplate) {
this.executionService = executionService;
this.metadataService = metadataService;
this.actionProcessor = actionProcessor;
this.objectMapper = objectMapper;
this.jsonUtils = jsonUtils;
this.evaluators = evaluators;
this.retryTemplate = retryTemplate;
if (properties.getEventProcessorThreadCount() <= 0) {
throw new IllegalStateException(
"Cannot set event processor thread count to <=0. To disable event "
+ "processing, set conductor.default-event-processor.enabled=false.");
}
ThreadFactory threadFactory =
new BasicThreadFactory.Builder()
.namingPattern("event-action-executor-thread-%d")
.build();
eventActionExecutorService =
Executors.newFixedThreadPool(
properties.getEventProcessorThreadCount(), threadFactory);
this.isEventMessageIndexingEnabled = properties.isEventMessageIndexingEnabled();
LOGGER.info("Event Processing is ENABLED");
}
public void handle(ObservableQueue queue, Message msg) {
List<EventExecution> transientFailures = null;
boolean executionFailed = false;View on GitHub (pinned to cf7c3e4a8a)
Solutions
- To disable event processing: set conductor.default-event-processor.enabled=false (do not zero the thread count).
- To keep it enabled: set conductor.app.event-processor-thread-count to a positive value (default 2).
- Verify no profile/env overrides force the count to 0 while the processor remains enabled.
Example fix
// before - breaks startup conductor.app.event-processor-thread-count=0 // after - correctly disables the processor conductor.default-event-processor.enabled=false
Defensive patterns
Strategy: validation
Validate before calling
// Validate before relying on the processor
int n = properties.getEventProcessorThreadCount();
if (n <= 0 && properties.isDefaultEventProcessorEnabled()) {
throw new IllegalStateException(
"Set conductor.default-event-processor.enabled=false to disable, "
+ "or event-processor-thread-count to > 0");
} Prevention
- Use conductor.default-event-processor.enabled=false to disable the processor, not thread count 0.
- Keep event-processor-thread-count positive (default 2) when enabled.
- Add a config check in CI that rejects a non-positive count when the processor is enabled.
When it happens
Trigger: Setting conductor.app.event-processor-thread-count=0 (or negative) while the default event processor bean is still being created (i.e. conductor.default-event-processor.enabled is not false). Fires at construction time during Spring startup.
Common situations: An operator tries to turn off event processing by setting the thread count to 0 instead of using the enabled flag. An env override coerces an empty value to 0. Note the default is 2, so this only fires on explicit misconfiguration.
Related errors
- conductor.app.sweeper-thread-count must be greater than 0.
- Missing property for connectionString OR endpoint
- Skill registry is not available
- llmProvider not specified: {name}
- no configuration found for: {name}
AI-assisted analysis of conductor-oss/conductor@cf7c3e4a8a (2026-08-14).
Data as JSON: /api/errors/aca45f216e43e605.
Report an issue: GitHub.