apache/cassandra · warning
Extensions differ: {} != {}
Error message
Extensions differ: {} != {} What it means
ClusterMetadata logs a warning when the extensions map (TCM Transformation extensions registered by pluggable components) differs between two ClusterMetadata instances. This is diagnostic output from the metadata comparison helper indicating that one instance carries extension state the other does not.
Source
Thrown at src/java/org/apache/cassandra/tcm/ClusterMetadata.java:1271
logger.warn("Token maps differ:");
tokenMap.dumpDiff(other.tokenMap);
}
if (!placements.equals(other.placements))
{
logger.warn("Placements differ:");
placements.dumpDiff(other.placements);
}
if (!lockedRanges.equals(other.lockedRanges))
{
logger.warn("Locked ranges differ: {} != {}", lockedRanges, other.lockedRanges);
}
if (!inProgressSequences.equals(other.inProgressSequences))
{
logger.warn("In progress sequences differ: {} != {}", inProgressSequences, other.inProgressSequences);
}
if (!extensions.equals(other.extensions))
{
logger.warn("Extensions differ: {} != {}", extensions, other.extensions);
}
if (!cmsMembership.equals(other.cmsMembership))
{
logger.warn("CMS Membership differ: {} != {}", cmsMembership, other.cmsMembership);
}
}
@Override
public int hashCode()
{
return Objects.hash(epoch, schema, directory, tokenMap, placements, accordFastPath, lockedRanges, inProgressSequences, consensusMigrationState, accordStaleReplicas, extensions, cmsMembership);
}
public static ClusterMetadata current()
{
return ClusterMetadataService.instance().metadata();
}
View on GitHub (pinned to 88fd0f6a0e)
Solutions
- Verify all nodes run a version supporting the same TCM extensions (align versions).
- Check which extension keys differ in the logged maps and identify the owning subsystem.
- Complete or retry the pending transformation so both sides converge.
- If divergence persists, fetch a fresh log/snapshot from the CMS.
Defensive patterns
Strategy: validation
Validate before calling
if (!local.extensions().keySet().equals(remote.extensions().keySet())) logger.warn("extension sets differ; possible mixed versions"); Prevention
- Keep all cluster nodes on the same Cassandra version
- Document any custom TCM extensions and their version requirements
- Diff extensions explicitly before relying on equality checks
When it happens
Trigger: Comparing ClusterMetadata instances where registered extensions (e.g.placement or topology extensions added by a Transformation) are present in one but missing or different in the other.
Common situations: Mixed-version clusters where one node supports an extension the other does not; custom TCM extensions applied during a transformation; debugging snapshot/log application mismatches.
Understand the failure class
Background: "This is a bug, please report it": internal invariant violations, unreachable panics, and SNH errors explained — this error's family across 47 libraries.
Related errors
- In progress sequences differ: {} != {}
- CMS Membership differ: {} != {}
- nextId differ: {} != {}
- Last modified differ: {} != {}
- Value for key {} is only present in the left set: {}
AI-assisted analysis of apache/cassandra@88fd0f6a0e (2026-09-10).
Data as JSON: /api/errors/3164b9608cb6f945.
Report an issue: GitHub.