apache/cassandra · error · UnsupportedOperationException
REVOKE operation is not supported by AllowAllAuthorizer
Error message
REVOKE operation is not supported by AllowAllAuthorizer
What it means
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.
Source
Thrown at src/java/org/apache/cassandra/auth/AllowAllAuthorizer.java:43
@Override
public boolean requireAuthorization()
{
return false;
}
public Set<Permission> authorize(AuthenticatedUser user, IResource resource)
{
return resource.applicablePermissions();
}
public Set<Permission> grant(AuthenticatedUser performer, Set<Permission> permissions, IResource resource, RoleResource to)
{
throw new UnsupportedOperationException("GRANT operation is not supported by AllowAllAuthorizer");
}
public Set<Permission> revoke(AuthenticatedUser performer, Set<Permission> permissions, IResource resource, RoleResource from)
{
throw new UnsupportedOperationException("REVOKE operation is not supported by AllowAllAuthorizer");
}
public void revokeAllFrom(RoleResource droppedRole)
{
}
public void revokeAllOn(IResource droppedResource)
{
}
public Set<PermissionDetails> list(AuthenticatedUser performer, Set<Permission> permissions, IResource resource, RoleResource of)
{
throw new UnsupportedOperationException("LIST PERMISSIONS operation is not supported by AllowAllAuthorizer");
}
public Set<IResource> protectedResources()
{
return Collections.emptySet();View on GitHub (pinned to 88fd0f6a0e)
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.
Example fix
// before CREATE TYPE orders.address (street text, Street text, city text); // after CREATE TYPE orders.address (street text, street2 text, city text);
Defensive patterns
Strategy: validation
Validate before calling
Set<String> seen = new HashSet<>();
for (String f : fieldNames) {
String norm = f.toLowerCase(); // unquoted identifiers are case-folded
if (!seen.add(norm)) throw new IllegalArgumentException("Duplicate field: " + f);
} Prevention
- Deduplicate field lists before generating DDL.
- Remember unquoted identifiers are case-insensitive in CQL.
- Lint generated CQL for duplicate field names.
When it happens
Trigger: 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.
Common situations: 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.
Understand the failure class
Background: Schema validation failed / invalid input schema: payload rejected because its shape doesn't match the expected schema — this error's family across 28 libraries.
Related errors
- category %s not found in %s
- GRANT operation is not supported by AllowAllAuthorizer
- LIST PERMISSIONS operation is not supported by AllowAllAutho
- Invalidate CIDR permissions cache operation not supported by
- 'Get CIDR groups for IP' operation not supported by %s
AI-assisted analysis of apache/cassandra@88fd0f6a0e (2026-09-10).
Data as JSON: /api/errors/38693ca2d7a11f6b.
Report an issue: GitHub.