apache/cassandra · error · ConfigurationException
It was not possible to generate a valid password in
Error message
It was not possible to generate a valid password in %s attempts. Check your configuration and try again.
What it means
The password generator tries up to maxPasswordGenerationAttempts times to randomly produce a password that passes the configured validator (including dictionary checks). If no generated password passes within that budget, it throws a ConfigurationException, indicating the validator constraints are too strict or contradictory relative to the generation strategy.
Solutions
- Relax the validator constraints (lower minimum lengths, broaden character set requirements) so random generation can succeed
- Increase maxPasswordGenerationAttempts in the password generator configuration
- Check the dictionary rule: if the dictionary rejects most strings, narrow the rule or regenerate passwords with more entropy
- Generate the password manually and verify it with the validator's validation logic before setting it
Example fix
// before maxPasswordGenerationAttempts = 100, min_length = 40 with strict characteristic rules // after Increase attempts: set password_generation.attempts to 1000, or reduce min_length to 16
Defensive patterns
Strategy: retry
Validate before calling
// Validate that a manually chosen sample password passes before relying on generation
boolean sampleOk = validator.validate(samplePassword).isValid();
if (!sampleOk) throw new IllegalStateException("Validator rejects even hand-crafted passwords; config too strict"); Try / catch
try {
String pw = generator.generate();
} catch (ConfigurationException e) {
if (e.getMessage().contains("generate a valid password")) {
// relax validator constraints or raise maxPasswordGenerationAttempts, then retry
}
} Prevention
- Test generation with your exact validator config before rollout
- Keep maxPasswordGenerationAttempts generously high (1000+) for strict validators
- Audit dictionary rules for over-rejection of random strings
When it happens
Trigger: Validator configured with requirements the generator's random construction rarely or never satisfies (e.g. very long minimum length combined with special-character or dictionary rules); a dictionary rule that rejects nearly all candidate passwords; an excessively low maxPasswordGenerationAttempts.
Common situations: Operators add a large dictionary file that rejects most candidates; strict length/characteristic minimums combined with default attempt limits; tests exercising testPasswordGenerationLength or password generation with a misconfigured validator.
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
- must be positive.
- The shortest password to pass the failing validator for any
- default_keyspace_rf to be set
- default_keyspace_rf to be set
- Dictionary file does not exist.
AI-assisted analysis of apache/cassandra@88fd0f6a0e (2026-09-10).
Data as JSON: /api/errors/840d2c7eb70707ae.
Report an issue: GitHub.
Appendix: source
Thrown at src/java/org/apache/cassandra/db/guardrails/CassandraPasswordGenerator.java:74
passwordGenerator = new PasswordGenerator();
}
@Override
public String generate(ValueValidator<String> validator, Map<String, Object> options)
{
boolean dictionaryAware = validator instanceof PasswordDictionaryAware;
for (int i = 0; i < maxPasswordGenerationAttempts; i++)
{
String generatedPassword = passwordGenerator.generatePassword(configuration.lengthWarn, characterRules);
if (validator.shouldWarn(generatedPassword, false).isEmpty())
{
if (!dictionaryAware || ((PasswordDictionaryAware<?>) validator).foundInDictionary(generatedPassword).isValid())
return generatedPassword;
}
}
throw new ConfigurationException("It was not possible to generate a valid password " +
"in " + maxPasswordGenerationAttempts + " attempts. " +
"Check your configuration and try again.");
}
@Nonnull
@Override
public CustomGuardrailConfig getParameters()
{
return configuration.asCustomGuardrailConfig();
}
@Override
public void validateParameters() throws ConfigurationException
{
configuration.validateParameters();
}
protected List<CharacterRule> getCharacterGenerationRules(int upper, int lower, int digits, int special)View on GitHub (pinned to 88fd0f6a0e)