apache/druid · info
numThreads[ ] configured, that is ignored on Router
Error message
numThreads[%d] configured, that is ignored on Router
What it means
Log warning in RouterProcessingModule.getProcessingExecutorPool. The Router does not execute queries itself, so it binds a NoopQueryProcessingPool; any explicit druid.processing.numThreads setting is honored only by query-running nodes and is silently ignored on the Router. The warning tells the operator their setting has no effect here.
Solutions
- Remove druid.processing.numThreads from the Router's runtime.properties if it was set intentionally for the Router.
- Keep processing tuning in per-node config (historicals, peers) rather than common.runtime.properties.
- No action needed if the setting is only present incidentally — the Router uses NoopQueryProcessingPool regardless.
- Document in deployment tooling that processing configs do not apply to Router.
Example fix
// before (router runtime.properties) druid.processing.numThreads=2 // after (removed) # druid.processing.numThreads not set on Router
Defensive patterns
Strategy: validation
Validate before calling
// Strip processing keys from Router configs
if (role == Role.ROUTER) {
props.remove("druid.processing.numThreads");
} Prevention
- Keep druid.processing.* only in historical/peon runtime.properties
- Filter processing keys out of shared config templates for Router
- Treat the warning as a config lint signal in deployment tooling
When it happens
Trigger: Runtime property druid.processing.numThreads (or the config object's numThreads) is set to a non-zero value in the Router's runtime.properties or common config, making isNumThreadsConfigured() true.
Common situations: Copying a shared runtime.properties or common.runtime.properties with processing tuning from historicals to the Router; templated configs applied cluster-wide.
Related errors
- numMergeBuffers[ ] configured, that is ignored on Router
- A valid tlsPort needs to specified when druid.enableTlsPort…
- At least one of the druid.enablePlaintextPort or…
- At least one task runner must be enabled
- At most one of 'druid.broker.segment.watchedTiers' and…
AI-assisted analysis of apache/druid@9b90983fd2 (2026-09-07).
Data as JSON: /api/errors/bf35180a67d828ca.
Report an issue: GitHub.
Appendix: source
Thrown at server/src/main/java/org/apache/druid/guice/RouterProcessingModule.java:64
*
* @see DruidProcessingModule
*/
public class RouterProcessingModule implements Module
{
private static final Logger log = new Logger(RouterProcessingModule.class);
@Override
public void configure(Binder binder)
{
DruidProcessingModule.registerConfigsAndMonitor(binder);
}
@Provides
@ManageLifecycle
public QueryProcessingPool getProcessingExecutorPool(DruidProcessingConfig config)
{
if (config.isNumThreadsConfigured()) {
log.warn("numThreads[%d] configured, that is ignored on Router", config.getNumThreads());
}
return NoopQueryProcessingPool.instance();
}
@Provides
@LazySingleton
@Global
public NonBlockingPool<ByteBuffer> getIntermediateResultsPool()
{
return DummyNonBlockingPool.instance();
}
@Provides
@LazySingleton
@Merging
public BlockingPool<ByteBuffer> getMergeBufferPool(DruidProcessingConfig config)
{
if (config.isNumMergeBuffersConfigured()) {View on GitHub (pinned to 9b90983fd2)