apache/druid · error · ISE

Config[ ] has been removed. Please use config[ ] instead.

Error message

Config[%s] has been removed. Please use config[%s] instead.

What it means

Startup validation checks for processing configs that have been deleted from Druid. If a removed config key is still present in runtime.properties, an ISE names the old key and points to the replacement config.

Solutions

  1. Remove the deleted config key from runtime.properties.
  2. Set the suggested replacement config instead.
  3. Check the Druid release/upgrade notes for the full list of removed configs.

Example fix

// before (runtime.properties)
druid.processing.oldBufferConfig=...
// after (runtime.properties)
druid.processing.newBufferConfig=...
Defensive patterns

Strategy: validation

Validate before calling

for (String key : removedConfigs) {
  if (props.getProperty(key) != null) { throw new IllegalStateException(key + " was removed; see Druid upgrade notes"); }
}

Try / catch

try { injector = new StartupInjectorBuilder().build(); } catch (ISE e) { if (e.getMessage().contains("has been removed")) { log.error("Replace removed config: {}", e.getMessage()); } throw e; }

Prevention

When it happens

Trigger: Passing a deprecated/removed Druid processing property (e.g. an old druid.processing.* key) via runtime.properties or command-line -D flags, detected by validateRemovedProcessingConfigs.

Common situations: Upgrading Druid versions while keeping old runtime.properties; copying configs between clusters running different Druid releases.

Understand the failure class

Background: "is deprecated and will be removed" — deprecation warnings for old API names, keywords, and options, and how to migrate before the removal release — this error's family across 29 libraries.

Related errors


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

Appendix: source

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

          "druid.processing.merge.awaitShutdownMillis"
      );
      checkDeletedConfigAndThrow(
          "druid.processing.merge.pool.parallelism",
          "druid.processing.merge.parallelism"
      );
      checkDeletedConfigAndThrow(
          "druid.processing.merge.pool.defaultMaxQueryParallelism",
          "druid.processing.merge.defaultMaxQueryParallelism"
      );
    }

    /**
     * Checks if a deleted config is present in the properties and throws an ISE.
     */
    private void checkDeletedConfigAndThrow(String deletedConfigName, String replaceConfigName)
    {
      if (properties.getProperty(deletedConfigName) != null) {
        throw new ISE(
            "Config[%s] has been removed. Please use config[%s] instead.",
            deletedConfigName,
            replaceConfigName
        );
      }
    }
  }

  @VisibleForTesting
  public static String getVersionString()
  {
    final String version = StartupInjectorBuilder.class.getPackage().getImplementationVersion();
    if (version == null || version.contains("SNAPSHOT")) {
      return "latest";
    }
    return version;
  }
}

View on GitHub (pinned to 9b90983fd2)