{"record":{"id":"aca45f216e43e605","repo":"conductor-oss/conductor","slug":"cannot-set-event-processor-thread-count-to-0-to","errorCode":null,"errorMessage":"Cannot set event processor thread count to <=0. To disable event processing, set conductor.default-event-processor.enabled=false.","messagePattern":"Cannot set event processor thread count to <=0\\. To disable event processing, set conductor\\.default-event-processor\\.enabled=false\\.","errorType":"exception","errorClass":"IllegalStateException","httpStatus":null,"severity":"critical","filePath":"core/src/main/java/com/netflix/conductor/core/events/DefaultEventProcessor.java","lineNumber":97,"sourceCode":"    public DefaultEventProcessor(\n            ExecutionService executionService,\n            MetadataService metadataService,\n            ActionProcessor actionProcessor,\n            JsonUtils jsonUtils,\n            ConductorProperties properties,\n            ObjectMapper objectMapper,\n            Map<String, Evaluator> evaluators,\n            @Qualifier(\"onTransientErrorRetryTemplate\") RetryTemplate retryTemplate) {\n        this.executionService = executionService;\n        this.metadataService = metadataService;\n        this.actionProcessor = actionProcessor;\n        this.objectMapper = objectMapper;\n        this.jsonUtils = jsonUtils;\n        this.evaluators = evaluators;\n        this.retryTemplate = retryTemplate;\n\n        if (properties.getEventProcessorThreadCount() <= 0) {\n            throw new IllegalStateException(\n                    \"Cannot set event processor thread count to <=0. To disable event \"\n                            + \"processing, set conductor.default-event-processor.enabled=false.\");\n        }\n        ThreadFactory threadFactory =\n                new BasicThreadFactory.Builder()\n                        .namingPattern(\"event-action-executor-thread-%d\")\n                        .build();\n        eventActionExecutorService =\n                Executors.newFixedThreadPool(\n                        properties.getEventProcessorThreadCount(), threadFactory);\n\n        this.isEventMessageIndexingEnabled = properties.isEventMessageIndexingEnabled();\n        LOGGER.info(\"Event Processing is ENABLED\");\n    }\n\n    public void handle(ObservableQueue queue, Message msg) {\n        List<EventExecution> transientFailures = null;\n        boolean executionFailed = false;","sourceCodeStart":79,"sourceCodeEnd":115,"githubUrl":"https://github.com/conductor-oss/conductor/blob/cf7c3e4a8adfb158be778ab1ec525323c363cd3a/core/src/main/java/com/netflix/conductor/core/events/DefaultEventProcessor.java#L79-L115","documentation":"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.","triggerScenarios":"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.","commonSituations":"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.","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."],"exampleFix":"// before - breaks startup\nconductor.app.event-processor-thread-count=0\n// after - correctly disables the processor\nconductor.default-event-processor.enabled=false","handlingStrategy":"validation","validationCode":"// Validate before relying on the processor\nint n = properties.getEventProcessorThreadCount();\nif (n <= 0 && properties.isDefaultEventProcessorEnabled()) {\n    throw new IllegalStateException(\n        \"Set conductor.default-event-processor.enabled=false to disable, \"\n            + \"or event-processor-thread-count to > 0\");\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["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."],"tags":["configuration","startup","thread-pool","event-processor"],"backgroundTag":null,"analyzedSha":"cf7c3e4a8adfb158be778ab1ec525323c363cd3a","analyzedAt":"2026-08-14T03:33:19.897Z","schemaVersion":2},"datasetVersion":"2026-08-14T05:17:29.042Z"}