{"record":{"id":"9e3e662a92aa6306","repo":"apache/druid","slug":"invalid-value-s-for-property-s-the-zookeeper","errorCode":null,"errorMessage":"Invalid value[%s] for property[%s]. The ZooKeeper-based 'remote' task runner has been removed. Remove this property to use the default 'httpRemote' runner (or set it to 'local' for single-process testing). See the Druid upgrade notes for details.","messagePattern":"Invalid value\\[(.+?)\\] for property\\[(.+?)\\]\\. The ZooKeeper-based 'remote' task runner has been removed\\. Remove this property to use the default 'httpRemote' runner \\(or set it to 'local' for single-process testing\\)\\. See the Druid upgrade notes for details\\.","errorType":"validation","errorClass":"ISE","httpStatus":null,"severity":"error","filePath":"processing/src/main/java/org/apache/druid/guice/StartupInjectorBuilder.java","lineNumber":208,"sourceCode":"            + \" See the Druid upgrade notes for details.\",\n            configuredType,\n            SERVERVIEW_TYPE_CONFIG_STRING,\n            SERVERVIEW_TYPE_HTTP,\n            SERVERVIEW_TYPE_HTTP\n        );\n      }\n    }\n\n    /**\n     * Rejects {@code druid.indexer.runner.type=remote}. The ZooKeeper-based {@code RemoteTaskRunner}\n     * has been removed; use the HTTP-based {@code httpRemote} runner (the default) or {@code local}\n     * for single-process testing.\n     */\n    private void validateIndexerRunnerType()\n    {\n      String configuredType = properties.getProperty(INDEXER_RUNNER_TYPE_CONFIG_STRING);\n      if (INDEXER_RUNNER_TYPE_REMOTE.equals(configuredType)) {\n        throw new ISE(\n            \"Invalid value[%s] for property[%s]. The ZooKeeper-based 'remote' task runner has\"\n            + \" been removed. Remove this property to use the default 'httpRemote' runner (or\"\n            + \" set it to 'local' for single-process testing). See the Druid upgrade notes for\"\n            + \" details.\",\n            configuredType,\n            INDEXER_RUNNER_TYPE_CONFIG_STRING\n        );\n      }\n    }\n\n    private void validateRemovedProcessingConfigs()\n    {\n      checkDeletedConfigAndThrow(\n          \"druid.processing.merge.task.initialYieldNumRows\",\n          \"druid.processing.merge.initialYieldNumRows\"\n      );\n      checkDeletedConfigAndThrow(\n          \"druid.processing.merge.task.targetRunTimeMillis\",","sourceCodeStart":190,"sourceCodeEnd":226,"githubUrl":"https://github.com/apache/druid/blob/9b90983fd291f26935af934383ce360473179e4d/processing/src/main/java/org/apache/druid/guice/StartupInjectorBuilder.java#L190-L226","documentation":"During startup validation, Druid rejects the removed ZooKeeper-based 'remote' task runner type. The indexer must use 'httpRemote' (the default) or 'local' for single-process testing; any occurrence of druid.indexer.runner.type=remote throws an ISE.","triggerScenarios":"Setting druid.indexer.runner.type=remote in runtime.properties, usually on a middle manager/indexer node upgraded from an older Druid that used ZK-based remote runners.","commonSituations":"Cluster upgrades carrying over legacy middle-manager configs; copying config snippets from old Druid documentation or blogs.","solutions":["Remove druid.indexer.runner.type so the default 'httpRemote' runner is used.","Set druid.indexer.runner.type=local only for single-process testing setups.","Follow the Druid upgrade notes to migrate off the ZK-based remote task runner."],"exampleFix":"// before (runtime.properties)\ndruid.indexer.runner.type=remote\n// after (runtime.properties)\ndruid.indexer.runner.type=httpRemote","handlingStrategy":"validation","validationCode":"String v = props.getProperty(\"druid.indexer.runner.type\");\nif (\"remote\".equals(v)) { throw new IllegalStateException(\"druid.indexer.runner.type=remote is removed; use httpRemote or local\"); }","typeGuard":null,"tryCatchPattern":"try { injector = new StartupInjectorBuilder().build(); } catch (ISE e) { if (e.getMessage().contains(\"druid.indexer.runner.type\")) { log.error(\"Remove remote runner config; default is httpRemote\"); } throw e; }","preventionTips":["Never set druid.indexer.runner.type in production configs","Use 'local' only in single-process test setups","Review upgrade notes when migrating ZK-based clusters"],"tags":["startup","configuration","indexer","zookeeper","removed-feature"],"backgroundTag":"invalid-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"}