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
- Confirm the node actually registered with the cluster (check joining node logs for registration)
- List known nodes/ids via `nodetool status` or cluster metadata and use the correct id/address
- If already unregistered, no abort is needed - clean up any local data/state on the former bootstrap node directly
- 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
- Check `nodetool status` for the address before aborting
- Remember abortbootstrap is one-shot - a second run fails because the entry is gone
- Confirm you are on the right cluster/DC
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
- Can't abort bootstrap for - it does not exist in cluster me
- Can't abort bootstrap for since it is not bootstrapping
- Node is not yet bootstrapped completely. Use nodetool to che
- Can't abort bootstrap for - it is alive
- Can't abort bootstrap for node since the state is
AI-assisted analysis of apache/cassandra@88fd0f6a0e (2026-09-10).
Data as JSON: /api/errors/42a6e4488b863940.
Report an issue: GitHub.