{"record":{"id":"6f5541acc591dd71","repo":"apache/cassandra","slug":"value-s-can-t-be-converted-to-integer","errorCode":null,"errorMessage":"Value '%s' can't be converted to integer.","messagePattern":"Value '(.+?)' can't be converted to integer\\.","errorType":"validation","errorClass":"IllegalArgumentException","httpStatus":null,"severity":"error","filePath":"src/java/org/apache/cassandra/db/guardrails/UUIDRoleNameGenerator.java","lineNumber":176,"sourceCode":"            else\n                throw new IllegalArgumentException(\"Value of \" + NAME_SIZE + \" has to be strictly positive integer.\");\n        }\n        else\n        {\n            sizeObject = MAXIMUM_NAME_SIZE;\n        }\n\n        int size;\n\n        if (sizeObject instanceof String)\n        {\n            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":158,"sourceCodeEnd":194,"githubUrl":"https://github.com/apache/cassandra/blob/88fd0f6a0eaed8943f05ac9e8f947882b8ddc8f1/src/java/org/apache/cassandra/db/guardrails/UUIDRoleNameGenerator.java#L158-L194","documentation":"Thrown by UUIDRoleNameGenerator.getSize() when the 'name_size' option is a String that Integer.parseInt cannot convert (or a completely unsupported object type). The message includes the offending value.","triggerScenarios":"Passing name_size as a non-numeric string like \"eight\" or \"8.5\" or \" 8\" (whitespace), or as an unsupported object (e.g. Boolean, List) that is neither String nor Number.","commonSituations":"Users writing fractional or formatted numbers ('8.0', '1_0'), or config frameworks deserializing the value as a Float/Boolean.","solutions":["Pass name_size as a whole-number string like \"8\" or as an integer Number type","Trim whitespace and avoid decimals/suffixes in the string value","Handle the unsupported-type branch: only String or Number instances are accepted"],"exampleFix":"// before\noptions.put(\"name_size\", \"8.5\");\n// after\noptions.put(\"name_size\", \"8\");","handlingStrategy":"validation","validationCode":"Object v = options.get(\"name_size\");\nif (v instanceof String s && !s.trim().matches(\"\\\\d+\"))\n    throw new IllegalArgumentException(\"name_size must be a whole number string\");","typeGuard":"boolean isParsableSize(Object v) {\n    if (v instanceof Number) return true;\n    if (v instanceof String) try { Integer.parseInt((String) v); return true; } catch (Exception e) { return false; }\n    return false;\n}","tryCatchPattern":"try {\n    generator.generate(options);\n} catch (IllegalArgumentException e) {\n    if (e.getMessage().contains(\"can't be converted to integer\")) {\n        // parse/normalize name_size client-side, then retry\n    } else throw e;\n}","preventionTips":["Pass name_size as \"8\" (integer string) or as an Integer, never \"8.0\" or \" 8\"","Trim and regex-validate numeric strings before passing","Reject non-numeric strings at config-load time"],"tags":["guardrails","arguments","parsing","type-mismatch"],"backgroundTag":"invalid-argument-format","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"}