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

  1. Check which transformation sequence is in progress with nodetool and let it complete before comparing metadata.
  2. Ensure all nodes are caught up to the same epoch (fetch log from CMS) before diffing.
  3. If state is stuck, restart the node or use `nodetool cms show` / revertToEpoch-style recovery under community guidance.
  4. 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

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


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