apache/druid · error · ISE

Invalid value[ ] for property[ ]. The ZooKeeper-based…

Error message

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.

What it means

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.

Solutions

  1. Remove druid.indexer.runner.type so the default 'httpRemote' runner is used.
  2. Set druid.indexer.runner.type=local only for single-process testing setups.
  3. Follow the Druid upgrade notes to migrate off the ZK-based remote task runner.

Example fix

// before (runtime.properties)
druid.indexer.runner.type=remote
// after (runtime.properties)
druid.indexer.runner.type=httpRemote
Defensive patterns

Strategy: validation

Validate before calling

String v = props.getProperty("druid.indexer.runner.type");
if ("remote".equals(v)) { throw new IllegalStateException("druid.indexer.runner.type=remote is removed; use httpRemote or local"); }

Try / catch

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; }

Prevention

When it happens

Trigger: 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.

Common situations: Cluster upgrades carrying over legacy middle-manager configs; copying config snippets from old Druid documentation or blogs.

Understand the failure class

Background: "Invalid value" and "allowed values are" config errors: what your library rejected and how to fix it — this error's family across 41 libraries.

Related errors


AI-assisted analysis of apache/druid@9b90983fd2 (2026-09-07). Data as JSON: /api/errors/9e3e662a92aa6306. Report an issue: GitHub.

Appendix: source

Thrown at processing/src/main/java/org/apache/druid/guice/StartupInjectorBuilder.java:208

            + " See the Druid upgrade notes for details.",
            configuredType,
            SERVERVIEW_TYPE_CONFIG_STRING,
            SERVERVIEW_TYPE_HTTP,
            SERVERVIEW_TYPE_HTTP
        );
      }
    }

    /**
     * Rejects {@code druid.indexer.runner.type=remote}. The ZooKeeper-based {@code RemoteTaskRunner}
     * has been removed; use the HTTP-based {@code httpRemote} runner (the default) or {@code local}
     * for single-process testing.
     */
    private void validateIndexerRunnerType()
    {
      String configuredType = properties.getProperty(INDEXER_RUNNER_TYPE_CONFIG_STRING);
      if (INDEXER_RUNNER_TYPE_REMOTE.equals(configuredType)) {
        throw new ISE(
            "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.",
            configuredType,
            INDEXER_RUNNER_TYPE_CONFIG_STRING
        );
      }
    }

    private void validateRemovedProcessingConfigs()
    {
      checkDeletedConfigAndThrow(
          "druid.processing.merge.task.initialYieldNumRows",
          "druid.processing.merge.initialYieldNumRows"
      );
      checkDeletedConfigAndThrow(
          "druid.processing.merge.task.targetRunTimeMillis",

View on GitHub (pinned to 9b90983fd2)