apache/cassandra · error · org.apache.cassandra.exceptions.InvalidRequestException

Invalid value(s) for DATACENTERS

Error message

Invalid value(s) for DATACENTERS '%s',All values must be valid datacenters

What it means

InvalidRequestException from DCPermissions.validate: the set of datacenter names supplied for a role's DATACENTERS option contains one or more names that are not valid datacenters in the current cluster metadata (Datacenters.getValidDatacenters). The difference set names exactly which values are unknown.

Solutions

  1. Verify datacenter names with nodetool status or cluster metadata and correct typos
  2. Create/enable the intended datacenter before referencing it
  3. Remove decommissioned or renamed datacenters from the role's DATACENTERS option
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at src/java/org/apache/cassandra/auth/DCPermissions.java:100 when the library encounters an invalid state.

Common situations: See trigger scenarios.


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

Appendix: source

Thrown at src/java/org/apache/cassandra/auth/DCPermissions.java:100

        public int hashCode()
        {
            return subset.hashCode();
        }

        public String toString()
        {
            StringJoiner joiner = new StringJoiner(", ");
            subset.forEach(joiner::add);
            return joiner.toString();
        }

        public void validate()
        {
            Set<String> unknownDcs = Sets.difference(subset, Datacenters.getValidDatacenters(ClusterMetadata.current()));
            if (!unknownDcs.isEmpty())
            {
                throw new InvalidRequestException(String.format("Invalid value(s) for DATACENTERS '%s'," +
                                                                "All values must be valid datacenters", subset));
            }
        }
    }

    private static final DCPermissions ALL = new DCPermissions()
    {
        public boolean canAccess(String dc)
        {
            return true;
        }

        public boolean restrictsAccess()
        {
            return false;
        }

        public Set<String> allowedDCs()

View on GitHub (pinned to 88fd0f6a0e)