apache/cassandra · error · IllegalArgumentException

Unknown endpoint:

Error message

Unknown endpoint: 

What it means

Thrown by parseNodeIdOrEndpoint in StorageService when the endpoint resolves to a valid IP but cluster metadata's directory has no peer id for it - the address is not (or no longer) a known cluster member. Thrown as IllegalArgumentException after logging at WARN.

Source

Thrown at src/java/org/apache/cassandra/service/StorageService.java:1729

        {
            InetAddressAndPort endpoint;
            try
            {
                endpoint = InetAddressAndPort.getByName(endpointStr);
            }
            catch (UnknownHostException e)
            {
                String msg = "Unable to look up endpoint " + endpointStr;
                logger.warn("{}", msg, e);
                throw new IllegalArgumentException(msg, e);
            }

            nodeId = metadata.directory.peerId(endpoint);
            if (nodeId == null)
            {
                String msg = "Unknown endpoint: " + endpoint;
                logger.warn(msg);
                throw new IllegalArgumentException(msg);
            }
        }
        return nodeId;
    }

    @Override
    public void migrateConsensusProtocol(@Nonnull List<String> keyspaceNames,
                                         @Nullable List<String> maybeTableNames,
                                         @Nullable String maybeRangesStr)
    {
        checkArgument(!keyspaceNames.contains(SchemaConstants.METADATA_KEYSPACE_NAME));
        startMigrationToConsensusProtocol(keyspaceNames, Optional.ofNullable(maybeTableNames), Optional.ofNullable(maybeRangesStr));
    }

    @Override
    public Integer finishConsensusMigration(@Nonnull String keyspace,
                                            @Nullable List<String> maybeTableNames,
                                            @Nullable String maybeRangesStr,

View on GitHub (pinned to 88fd0f6a0e)

Solutions

  1. Confirm the node actually registered with the cluster (check joining node logs for registration)
  2. List known nodes/ids via `nodetool status` or cluster metadata and use the correct id/address
  3. If already unregistered, no abort is needed - clean up any local data/state on the former bootstrap node directly
  4. Verify you are pointed at the intended cluster's coordinator

Example fix

// before
nodetool abortbootstrap 10.0.0.99   # unknown to this cluster
// after
nodetool status                      # find real member addresses
nodetool abortbootstrap 10.0.0.5
Defensive patterns

Strategy: validation

Validate before calling

// Confirm the endpoint is a known member before aborting
// Parse `nodetool status` output and check the address appears there.
Set<String> members = /* addresses from nodetool status */;
if (!members.contains(endpoint)) throw new IllegalStateException("Unknown member: " + endpoint);

Try / catch

try {
    probe.abortBootstrap(endpoint);
} catch (IllegalArgumentException e) {
    if (e.getMessage() != null && e.getMessage().startsWith("Unknown endpoint"))
        log.warn("{} is not in cluster metadata; it may already be unregistered", endpoint);
    else throw e;
}

Prevention

When it happens

Trigger: Calling `nodetool abortbootstrap <ip>` where the IP belongs to a machine that never joined, whose metadata entry was already removed by a previous Unregister, or which is in a different cluster.

Common situations: Node was already successfully aborted/unregistered; aborting an IP that never registered (e.g. new VM not yet started); targeting the wrong cluster or DC address; DHCP reuse giving an old node's address to a different host.

Understand the failure class

Background: 'Could not be found', 'does not exist', 'not found in database': the resource-not-found family when an ID, slug, key, or URI lookup comes back empty — this error's family across 20 libraries.

Related errors


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