apache/cassandra · error · IllegalArgumentException

No transformation sequence is in progress for ${nodeIpOrId}.

Error message

No transformation sequence is in progress for ${nodeIpOrId}.

What it means

Thrown by CMSOfflineTool.execute() when the requested node has no in-progress multi-step operation (bootstrap/replace/decommission etc.) in the metadata dump. The offline 'abort/cancel transformation sequence' operation needs an active sequence to act on.

Source

Thrown at src/java/org/apache/cassandra/tools/CMSOfflineTool.java:258

        String outputFilePath;

        protected abstract EnumSet<MultiStepOperation.Kind> supportedKinds();

        protected ClusterMetadata postCancel(ClusterMetadata metadata, NodeId nodeId)
        {
            return metadata;
        }

        @Override
        protected void execute(Output output) throws IOException
        {
            ClusterMetadata metadata = parseClusterMetadata();
            NodeId nodeId = nodeIdentifierOption.getNodeId(metadata);

            MultiStepOperation<?> multiStepOperation = metadata.inProgressSequences.get(nodeId);
            if (multiStepOperation == null)
            {
                throw new IllegalArgumentException("No transformation sequence is in progress for " +
                                                   nodeIdentifierOption.getNodeIpOrId() + '.');
            }

            if (!supportedKinds().contains(multiStepOperation.kind()))
            {
                throw new IllegalArgumentException("Sequence of kind " + multiStepOperation.kind() +
                                                   " is in progress for node " + nodeIdentifierOption.getNodeIpOrId() +
                                                   ". Cannot proceed with this operation.");
            }

            CancelInProgressSequence cancelSequence = new CancelInProgressSequence(nodeId);
            ClusterMetadata updatedMetadata = cancelSequence.execute(metadata).success().metadata;
            updatedMetadata = postCancel(updatedMetadata, nodeId);
            writeMetadata(output, updatedMetadata, outputFilePath);
        }
    }

    /**

View on GitHub (pinned to 88fd0f6a0e)

Solutions

  1. Confirm the node actually has an in-progress sequence (inspect the dump / cms show)
  2. Verify the node identifier (IP or id) refers to the intended node
  3. No action needed if the sequence already finished — the operation is a no-op case

Example fix

# before
cms offline abort-sequence --id 10.0.0.5  # no sequence in progress
# after: check first, then target the right node
cms offline show-sequence --id 10.0.0.6  # node that actually has an in-progress bootstrap
Defensive patterns

Strategy: validation

Validate before calling

NodeId nodeId = nodeIdentifierOption.getNodeId(metadata);
if (!metadata.inProgressSequences.containsKey(nodeId)) { /* nothing to abort; skip or correct the id */ }

Try / catch

try { tool.execute(); } catch (IllegalArgumentException e) { if (e.getMessage().startsWith("No transformation sequence is in progress")) { /* verify node id / no-op case */ } else throw e; }

Prevention

When it happens

Trigger: Running an offline sequence-abort command (e.g. cms offline abort-sequence) for a node whose metadata.inProgressSequences.get(nodeId) is null — the node has no running transformation sequence.

Common situations: Aborting a bootstrap that already completed or was never started; using the wrong node id/IP; sequence already aborted in a previous run.

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


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