{"record":{"id":"2f4999d0f405c73d","repo":"apache/druid","slug":"nummergebuffers-d-configured-that-is-ignored-on","errorCode":null,"errorMessage":"numMergeBuffers[%d] configured, that is ignored on Router","messagePattern":"numMergeBuffers\\[(.+?)\\] 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":83,"sourceCode":"    }\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()) {\n      log.warn(\n          \"numMergeBuffers[%d] configured, that is ignored on Router\",\n          config.getNumMergeBuffers()\n      );\n    }\n    return DummyBlockingPool.instance();\n  }\n\n  /**\n   * Reservation pool injected with a dummy pool\n   */\n  @Provides\n  @LazySingleton\n  @Merging\n  public GroupByResourcesReservationPool getGroupByResourcesReservationPool(\n      @Merging BlockingPool<ByteBuffer> mergeBufferPool,\n      GroupByQueryConfig groupByQueryConfig\n  )\n  {","sourceCodeStart":65,"sourceCodeEnd":101,"githubUrl":"https://github.com/apache/druid/blob/9b90983fd291f26935af934383ce360473179e4d/server/src/main/java/org/apache/druid/guice/RouterProcessingModule.java#L65-L101","documentation":"Log warning in RouterProcessingModule.getMergeBufferPool. The Router never performs merge operations, so it binds a DummyBlockingPool for merge buffers; a configured druid.processing.numMergeBuffers has no effect on the Router and the warning flags that the value is ignored.","triggerScenarios":"druid.processing.numMergeBuffers is explicitly set (isNumMergeBuffersConfigured() true) in the Router's runtime.properties or shared config while the Router module constructs its (no-op) merge buffer pool.","commonSituations":"Cluster-wide common.runtime.properties carrying historical tuning; deployment templates reusing the same processing block for all node types.","solutions":["Remove druid.processing.numMergeBuffers from the Router's runtime.properties.","Keep merge-buffer sizing in per-node configs for historicals/peers only.","No functional impact if left set — the DummyBlockingPool is used regardless; suppress noise by removing the key.","Update deployment automation so processing keys are only emitted for query-executing roles."],"exampleFix":"// before (router runtime.properties)\ndruid.processing.numMergeBuffers=2\n// after (removed)\n# druid.processing.numMergeBuffers not set on Router","handlingStrategy":"validation","validationCode":"// Strip merge-buffer keys from Router configs\nif (role == Role.ROUTER) {\n  props.remove(\"druid.processing.numMergeBuffers\");\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Set druid.processing.numMergeBuffers only on nodes that merge (historicals)","Emit per-role config blocks in deployment templates","Ignore functionally, but clean up to silence the warning"],"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"}