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

  1. Set name_size to at most 36 (MAXIMUM_NAME_SIZE)
  2. If longer names are required, use a different role-name generator that supports longer names
  3. 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

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


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