{"record":{"id":"ec77698d6f9f6565","repo":"apache/cassandra","slug":"generator-generates-names-of-maximum-length-s-yo","errorCode":null,"errorMessage":"Generator generates names of maximum length %s. You want to generate with length %s.","messagePattern":"Generator generates names of maximum length (.+?)\\. You want to generate with length (.+?)\\.","errorType":"validation","errorClass":"IllegalArgumentException","httpStatus":null,"severity":"error","filePath":"src/java/org/apache/cassandra/db/guardrails/UUIDRoleNameGenerator.java","lineNumber":188,"sourceCode":"            try\n            {\n                size = Integer.parseInt((String) sizeObject);\n            }\n            catch (Throwable t)\n            {\n                throw new IllegalArgumentException(\"Value '\" + sizeObject + \"' can't be converted to integer.\");\n            }\n        }\n        else if (sizeObject instanceof Number)\n            size = ((Number) sizeObject).intValue();\n        else\n            throw new IllegalArgumentException(\"Unsupported object passed to resolve \" + NAME_SIZE + \": \" + sizeObject.getClass().getName());\n\n        if (size < minimumNameSize)\n            throw new IllegalArgumentException(\"Value of \" + NAME_SIZE + \" parameter has to be at least \" + minimumNameSize + '.');\n\n        if (size > MAXIMUM_NAME_SIZE)\n            throw new IllegalArgumentException(\"Generator generates names of maximum length \" + MAXIMUM_NAME_SIZE + \". \" +\n                                               \"You want to generate with length \" + size + '.');\n\n        return size;\n    }\n}\n","sourceCodeStart":170,"sourceCodeEnd":194,"githubUrl":"https://github.com/apache/cassandra/blob/88fd0f6a0eaed8943f05ac9e8f947882b8ddc8f1/src/java/org/apache/cassandra/db/guardrails/UUIDRoleNameGenerator.java#L170-L194","documentation":"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.","triggerScenarios":"Calling generate(options) with name_size greater than 36, e.g. options.put(\"name_size\", \"64\").","commonSituations":"Users assuming the generator truncates/pads rather than rejecting; copying name-size settings from a different (non-UUID) name generator with a larger maximum.","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"],"exampleFix":"// before\noptions.put(\"name_size\", \"64\");\n// after\noptions.put(\"name_size\", \"36\");","handlingStrategy":"validation","validationCode":"int requested = Integer.parseInt((String) options.get(\"name_size\"));\nif (requested > 36)\n    options.put(\"name_size\", \"36\");","typeGuard":"boolean withinUuidMaximum(Object v) {\n    int n = (v instanceof Number) ? ((Number) v).intValue() : Integer.parseInt((String) v);\n    return n <= 36;\n}","tryCatchPattern":"try {\n    generator.generate(options);\n} catch (IllegalArgumentException e) {\n    if (e.getMessage().contains(\"maximum length\")) {\n        // clamp to 36 or switch to a generator supporting longer names\n    } else throw e;\n}","preventionTips":["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"],"tags":["guardrails","range","options","configuration"],"backgroundTag":"value-out-of-range","analyzedSha":"88fd0f6a0eaed8943f05ac9e8f947882b8ddc8f1","analyzedAt":"2026-09-10T07:29:22.284Z","contentChangedAt":"2026-09-10T07:29:22.284Z","schemaVersion":2},"datasetVersion":"2026-09-14T21:17:11.552Z"}