apache/cassandra · warning
In progress sequences differ: {} != {}
Error message
In progress sequences differ: {} != {} What it means
ClusterMetadata logs a warning (not a thrown exception) when two ClusterMetadata instances differ in their inProgressSequences map. It is part of a difference-diagnostics helper that walks each metadata component and warns on the first components that diverge, typically to help operators debug state divergence between nodes.
Source
Thrown at src/java/org/apache/cassandra/tcm/ClusterMetadata.java:1267
directory.dumpDiff(other.directory);
}
if (!tokenMap.equals(other.tokenMap))
{
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()View on GitHub (pinned to 88fd0f6a0e)
Solutions
- Check which transformation sequence is in progress with nodetool and let it complete before comparing metadata.
- Ensure all nodes are caught up to the same epoch (fetch log from CMS) before diffing.
- If state is stuck, restart the node or use `nodetool cms show` / revertToEpoch-style recovery under community guidance.
- Upgrade to a version where this diagnostics method exists and compare full ClusterMetadata dumps for the differing sequences.
Defensive patterns
Strategy: validation
Validate before calling
if (!local.inProgressSequences().equals(remote.inProgressSequences())) logger.info("waiting for in-progress transformation to converge before diff"); Prevention
- Only diff metadata after all nodes report the same epoch
- Avoid comparing metadata mid-transformation
- Use nodetool cms show to confirm quiescent state
When it happens
Trigger: Calling ClusterMetadata.equals/metadata comparison diagnostics against another ClusterMetadata whose inProgressSequences map differs (e.g. an in-flight transformation such as a bootstrap or replace is recorded on one side but not the other).
Common situations: Node restarts or gossip-based metadata application during an ongoing transformation; debugging why two CMS replicas disagree on cluster state; comparing a snapshot fetched from a peer against local state mid-operation.
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
- Extensions 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/33a5cd402ffa1975.
Report an issue: GitHub.