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
- Choose a default_role_initializer implementation whose supportsRoleManager() returns true for the configured role_manager.
- Remove the explicit default_role_initializer setting to use the default pairing.
- 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
- Only set default_role_initializer explicitly when you know it supports your role_manager.
- Check supportsRoleManager() of your initializer for each role manager you configure.
- Prefer the default initializer unless you have a concrete need.
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
- %s requires %s
- %s has authorization enabled which requires %s to enable aut
- %s can't be used with %s
- Failed to instantiate %s
- Unsupported parameter '%s' for %s, supported parameters are
AI-assisted analysis of apache/cassandra@88fd0f6a0e (2026-09-10).
Data as JSON: /api/errors/66af1cc766476236.
Report an issue: GitHub.