apache/cassandra · critical · ConfigurationException

Initial location provider rejected registration location, pl

Error message

Initial location provider rejected registration location, please check the system log for errors

What it means

SnitchAdapter bridges the configured IEndpointSnitch to the initial location provider used during node registration. During startup, the snitch's validate() is called with the set of all datacenters and racks known in schema metadata; if the snitch rejects them (e.g. it cannot place this node in a known DC/rack), a ConfigurationException with this generic message is thrown, with details written to the system log.

Source

Thrown at src/java/org/apache/cassandra/locator/SnitchAdapter.java:53

    {
        this.snitch = snitch;
    }

    @Override
    public Location initialLocation()
    {
        return new Location(snitch.getLocalDatacenter(), snitch.getLocalRack());
    }

    @Override
    public void validate(ClusterMetadata metadata)
    {
        Set<String> datacenters = metadata.directory.allDatacenterRacks().keySet();
        Set<String> racks = new HashSet<>();
        for (String dc : datacenters)
            racks.addAll(metadata.directory.datacenterRacks(dc).keySet());
        if (!snitch.validate(datacenters, racks))
            throw new ConfigurationException("Initial location provider rejected registration location, " +
                                             "please check the system log for errors");
    }

    @Override
    public <C extends ReplicaCollection<? extends C>> C sortedByProximity(InetAddressAndPort address, C addresses)
    {
        return snitch.sortedByProximity(address, addresses);
    }

    @Override
    public int compareEndpoints(InetAddressAndPort target, Replica r1, Replica r2)
    {
        return snitch.compareEndpoints(target, r1, r2);
    }

    @Override
    public boolean isWorthMergingForRangeQuery(ReplicaCollection<?> merged, ReplicaCollection<?> l1, ReplicaCollection<?> l2)
    {

View on GitHub (pinned to 88fd0f6a0e)

Solutions

  1. Check the system log lines preceding the exception for the snitch's specific validation error
  2. Ensure the local snitch config (cassandra-rackdc.properties / cassandra-topology.properties) declares dc/rack names matching the cluster's datacenters
  3. Restart Cassandra after correcting the snitch configuration

Example fix

// before (cassandra-rackdc.properties)
dc=DataCenter1  // cluster uses 'dc1'
// after
dc=dc1
rack=rack1
Defensive patterns

Strategy: validation

Validate before calling

Set<String> knownDcs = schema.getAllDatacenters();
String localDc = readFromRackdcProperties("dc");
String localRack = readFromRackdcProperties("rack");
if (!knownDcs.isEmpty() && !knownDcs.contains(localDc))
    throw new IllegalStateException("Local dc '" + localDc + "' not among cluster DCs " + knownDcs);

Try / catch

try { startNode(); }
catch (ConfigurationException e) { if (e.getMessage().contains("rejected registration location")) { /* read system log for snitch detail, fix config, restart */ } }

Prevention

When it happens

Trigger: Node startup/registration when the snitch (e.g. property-file or dynamic snitch wrapper) cannot reconcile this node's location (from cassandra-rackdc.properties or cassandra-topology.properties) with the DCs/racks registered in the cluster metadata.

Common situations: Mismatch between the local snitch config values and the DC names used by the rest of the cluster; changing snitch classes without aligning dc/rack names; malformed rackdc/topology files causing the snitch to log errors and fail validation.

Understand the failure class

Background: "Invalid value" and "allowed values are" config errors: what your library rejected and how to fix it — this error's family across 41 libraries.

Related errors


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