apache/cassandra · error · ConfigurationException

%s does not support %s

Error message

%s does not support %s

What it means

validateDefaultRoleInitializerSupportsRoleManager throws ConfigurationException when a default role initializer is explicitly configured in cassandra.yaml but that initializer's supportsRoleManager(roleManager) returns false for the configured IRoleManager. The initializer and role manager must be a compatible pair since the initializer bootstraps the first role through the role manager.

Source

Thrown at src/java/org/apache/cassandra/auth/AuthConfig.java:166

        // in case these rely on each other.

        authenticator.validateConfiguration();
        authorizer.validateConfiguration();
        roleManager.validateConfiguration();
        defaultRoleInitializer.validateConfiguration();
        networkAuthorizer.validateConfiguration();
        cidrAuthorizer.validateConfiguration();
        DatabaseDescriptor.getInternodeAuthenticator().validateConfiguration();
    }

    @VisibleForTesting
    static void validateDefaultRoleInitializerSupportsRoleManager(ParameterizedClass configuredInitializer,
                                                                  IDefaultRoleInitializer defaultRoleInitializer,
                                                                  IRoleManager roleManager)
    {
        boolean explicitlyConfigured = configuredInitializer != null && configuredInitializer.class_name != null;
        if (explicitlyConfigured && !defaultRoleInitializer.supportsRoleManager(roleManager))
            throw new ConfigurationException(defaultRoleInitializer.getClass().getName() + " does not support " + roleManager.getClass().getName(), false);
    }

    private static <T> T authInstantiate(ParameterizedClass authCls, Class<T> expectedType, Class<? extends T> defaultCls)
    {
        if (authCls != null && authCls.class_name != null)
        {
            String authPackage = AuthConfig.class.getPackage().getName();
            return ParameterizedClass.newInstance(authCls, List.of("", authPackage), expectedType);
        }

        if (defaultCls == null)
            return null;

        // for now, this has to stay and can not be replaced by ParameterizedClass.newInstance as above
        // due to that failing for simulator dtests. See CASSANDRA-20450 for more information.
        try
        {
            return defaultCls.newInstance();

View on GitHub (pinned to 88fd0f6a0e)

Solutions

  1. Choose a default_role_initializer implementation whose supportsRoleManager() returns true for the configured role_manager.
  2. Remove the explicit default_role_initializer setting to use the default pairing.
  3. Alternatively switch role_manager to one supported by the configured initializer, then restart.

Example fix

// before (cassandra.yaml)
default_role_initializer: MyRoleInitializer
role_manager: ExternallyManagedRoleManager
// after
role_manager: ExternallyManagedRoleManager
default_role_initializer: CompatibleExternalInitializer
Defensive patterns

Strategy: validation

Validate before calling

// before startup, confirm the configured pair is supported
if (conf.default_role_initializer != null && !defaultInitializer.supportsRoleManager(roleManager))
    throw new IllegalArgumentException("default_role_initializer incompatible with role_manager");

Try / catch

try { node.start(); } catch (ConfigurationException e) { log.fatal("initializer/role_manager mismatch: " + e.getMessage()); }

Prevention

When it happens

Trigger: Setting default_role_initializer to an explicitly configured implementation that does not support the configured role_manager (e.g. a custom initializer incompatible with CassandraRoleManager or an external role manager), then starting the node.

Common situations: Custom deployments pairing third-party role managers with the default initializer; upgrades where a new role manager no longer matches a configured initializer.

Understand the failure class

Background: Conflicting config options: "cannot be used together" — configuration validation errors across open-source libraries — this error's family across 162 libraries.

Related errors


AI-assisted analysis of apache/cassandra@88fd0f6a0e (2026-09-10). Data as JSON: /api/errors/66af1cc766476236. Report an issue: GitHub.