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

  1. Verify all nodes run a version supporting the same TCM extensions (align versions).
  2. Check which extension keys differ in the logged maps and identify the owning subsystem.
  3. Complete or retry the pending transformation so both sides converge.
  4. 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

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


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