apache/cassandra · error · IllegalArgumentException
Generator generates names of maximum length %s. You want to
Error message
Generator generates names of maximum length %s. You want to generate with length %s.
What it means
Thrown by UUIDRoleNameGenerator.getSize() when the requested name_size exceeds MAXIMUM_NAME_SIZE (36, the length of a UUID string). The generator cannot produce names longer than a UUID, so over-large requests are rejected with this IllegalArgumentException.
Source
Thrown at src/java/org/apache/cassandra/db/guardrails/UUIDRoleNameGenerator.java:188
try
{
size = Integer.parseInt((String) sizeObject);
}
catch (Throwable t)
{
throw new IllegalArgumentException("Value '" + sizeObject + "' can't be converted to integer.");
}
}
else if (sizeObject instanceof Number)
size = ((Number) sizeObject).intValue();
else
throw new IllegalArgumentException("Unsupported object passed to resolve " + NAME_SIZE + ": " + sizeObject.getClass().getName());
if (size < minimumNameSize)
throw new IllegalArgumentException("Value of " + NAME_SIZE + " parameter has to be at least " + minimumNameSize + '.');
if (size > MAXIMUM_NAME_SIZE)
throw new IllegalArgumentException("Generator generates names of maximum length " + MAXIMUM_NAME_SIZE + ". " +
"You want to generate with length " + size + '.');
return size;
}
}
View on GitHub (pinned to 88fd0f6a0e)
Solutions
- Set name_size to at most 36 (MAXIMUM_NAME_SIZE)
- If longer names are required, use a different role-name generator that supports longer names
- Catch IllegalArgumentException and clamp the requested size to 36 before retrying
Example fix
// before
options.put("name_size", "64");
// after
options.put("name_size", "36"); Defensive patterns
Strategy: validation
Validate before calling
int requested = Integer.parseInt((String) options.get("name_size"));
if (requested > 36)
options.put("name_size", "36"); Type guard
boolean withinUuidMaximum(Object v) {
int n = (v instanceof Number) ? ((Number) v).intValue() : Integer.parseInt((String) v);
return n <= 36;
} Try / catch
try {
generator.generate(options);
} catch (IllegalArgumentException e) {
if (e.getMessage().contains("maximum length")) {
// clamp to 36 or switch to a generator supporting longer names
} else throw e;
} Prevention
- Remember UUID-based names max out at 36 characters
- Clamp requested name_size to 36 before calling generate
- Choose a different generator if you need names longer than a UUID
When it happens
Trigger: Calling generate(options) with name_size greater than 36, e.g. options.put("name_size", "64").
Common situations: Users assuming the generator truncates/pads rather than rejecting; copying name-size settings from a different (non-UUID) name generator with a larger maximum.
Understand the failure class
Background: "value must be between 0 and 1" / "out of range" / "must not be negative" errors: fixing range-validation failures across open-source libraries — this error's family across 42 libraries.
Related errors
- Value of name_size parameter has to be at least %s.
- MINIMUM_NAME_SIZE_CONFIG_OPTION has to be at least DEFAULT_M
- Value of name_size has to be strictly positive integer.
- Invalid data rate: ${value}. It shouldn't be more than ${max
- Invalid data rate: value must be non-negative
AI-assisted analysis of apache/cassandra@88fd0f6a0e (2026-09-10).
Data as JSON: /api/errors/ec77698d6f9f6565.
Report an issue: GitHub.