{"record":{"id":"38693ca2d7a11f6b","repo":"apache/cassandra","slug":"revoke-operation-is-not-supported-by-allowallautho","errorCode":null,"errorMessage":"REVOKE operation is not supported by AllowAllAuthorizer","messagePattern":"REVOKE operation is not supported by AllowAllAuthorizer","errorType":"exception","errorClass":"UnsupportedOperationException","httpStatus":null,"severity":"error","filePath":"src/java/org/apache/cassandra/auth/AllowAllAuthorizer.java","lineNumber":43,"sourceCode":"    @Override\n    public boolean requireAuthorization()\n    {\n        return false;\n    }\n\n    public Set<Permission> authorize(AuthenticatedUser user, IResource resource)\n    {\n        return resource.applicablePermissions();\n    }\n\n    public Set<Permission> grant(AuthenticatedUser performer, Set<Permission> permissions, IResource resource, RoleResource to)\n    {\n        throw new UnsupportedOperationException(\"GRANT operation is not supported by AllowAllAuthorizer\");\n    }\n\n    public Set<Permission> revoke(AuthenticatedUser performer, Set<Permission> permissions, IResource resource, RoleResource from)\n    {\n        throw new UnsupportedOperationException(\"REVOKE operation is not supported by AllowAllAuthorizer\");\n    }\n\n    public void revokeAllFrom(RoleResource droppedRole)\n    {\n    }\n\n    public void revokeAllOn(IResource droppedResource)\n    {\n    }\n\n    public Set<PermissionDetails> list(AuthenticatedUser performer, Set<Permission> permissions, IResource resource, RoleResource of)\n    {\n        throw new UnsupportedOperationException(\"LIST PERMISSIONS operation is not supported by AllowAllAuthorizer\");\n    }\n\n    public Set<IResource> protectedResources()\n    {\n        return Collections.emptySet();","sourceCodeStart":25,"sourceCodeEnd":61,"githubUrl":"https://github.com/apache/cassandra/blob/88fd0f6a0eaed8943f05ac9e8f947882b8ddc8f1/src/java/org/apache/cassandra/auth/AllowAllAuthorizer.java#L25-L61","documentation":"Thrown during CreateTypeStatement.apply when two or more fields of the new user-defined type share the same field name. A UDT's fields must be uniquely named because they are stored as an ordered name-to-type mapping, so duplicates are rejected at DDL time before the type is created.","triggerScenarios":"Executing 'CREATE TYPE ks.t (a int, a text)' or any statement where fieldNames contains the same FieldIdentifier twice, detected by failing to add a name to the usedNames set.","commonSituations":"Copy-paste errors in long field lists; programmatically generated DDL concatenating field lists that overlap; case sensitivity confusion — unquoted field names are lowercased, so 'A' and 'a' both become 'a' and collide.","solutions":["Remove or rename the duplicate field so every name in the field list is unique.","Review the generated CQL if the DDL is produced by a tool, fixing the field-list generator.","Remember unquoted identifiers are case-insensitive: 'UserId int, userid text' is a duplicate — rename one field."],"exampleFix":"// before\nCREATE TYPE orders.address (street text, Street text, city text);\n// after\nCREATE TYPE orders.address (street text, street2 text, city text);","handlingStrategy":"validation","validationCode":"Set<String> seen = new HashSet<>();\nfor (String f : fieldNames) {\n    String norm = f.toLowerCase(); // unquoted identifiers are case-folded\n    if (!seen.add(norm)) throw new IllegalArgumentException(\"Duplicate field: \" + f);\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Deduplicate field lists before generating DDL.","Remember unquoted identifiers are case-insensitive in CQL.","Lint generated CQL for duplicate field names."],"tags":["cassandra","cql","ddl","user-type","validation"],"backgroundTag":"schema-validation-failed","analyzedSha":"88fd0f6a0eaed8943f05ac9e8f947882b8ddc8f1","analyzedAt":"2026-09-10T07:29:22.284Z","contentChangedAt":"2026-09-10T07:29:22.284Z","schemaVersion":2},"datasetVersion":"2026-09-14T16:17:12.679Z"}