{"record":{"id":"bf35180a67d828ca","repo":"apache/druid","slug":"numthreads-d-configured-that-is-ignored-on-rout","errorCode":null,"errorMessage":"numThreads[%d] configured, that is ignored on Router","messagePattern":"numThreads\\[(.+?)\\] configured, that is ignored on Router","errorType":"console","errorClass":null,"httpStatus":null,"severity":"info","filePath":"server/src/main/java/org/apache/druid/guice/RouterProcessingModule.java","lineNumber":64,"sourceCode":" *\n * @see DruidProcessingModule\n */\npublic class RouterProcessingModule implements Module\n{\n  private static final Logger log = new Logger(RouterProcessingModule.class);\n\n  @Override\n  public void configure(Binder binder)\n  {\n    DruidProcessingModule.registerConfigsAndMonitor(binder);\n  }\n\n  @Provides\n  @ManageLifecycle\n  public QueryProcessingPool getProcessingExecutorPool(DruidProcessingConfig config)\n  {\n    if (config.isNumThreadsConfigured()) {\n      log.warn(\"numThreads[%d] configured, that is ignored on Router\", config.getNumThreads());\n    }\n    return NoopQueryProcessingPool.instance();\n  }\n\n  @Provides\n  @LazySingleton\n  @Global\n  public NonBlockingPool<ByteBuffer> getIntermediateResultsPool()\n  {\n    return DummyNonBlockingPool.instance();\n  }\n\n  @Provides\n  @LazySingleton\n  @Merging\n  public BlockingPool<ByteBuffer> getMergeBufferPool(DruidProcessingConfig config)\n  {\n    if (config.isNumMergeBuffersConfigured()) {","sourceCodeStart":46,"sourceCodeEnd":82,"githubUrl":"https://github.com/apache/druid/blob/9b90983fd291f26935af934383ce360473179e4d/server/src/main/java/org/apache/druid/guice/RouterProcessingModule.java#L46-L82","documentation":"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.","triggerScenarios":"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.","commonSituations":"Copying a shared runtime.properties or common.runtime.properties with processing tuning from historicals to the Router; templated configs applied cluster-wide.","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."],"exampleFix":"// before (router runtime.properties)\ndruid.processing.numThreads=2\n// after (removed)\n# druid.processing.numThreads not set on Router","handlingStrategy":"validation","validationCode":"// Strip processing keys from Router configs\nif (role == Role.ROUTER) {\n  props.remove(\"druid.processing.numThreads\");\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["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"],"tags":["configuration","router","ignored-setting"],"backgroundTag":"unsupported-config-value","analyzedSha":"9b90983fd291f26935af934383ce360473179e4d","analyzedAt":"2026-09-07T13:32:30.957Z","contentChangedAt":"2026-09-07T13:32:30.957Z","schemaVersion":2},"datasetVersion":"2026-09-17T15:17:12.973Z"}