apache/cassandra · warning · RuntimeException

'nodetool bootstrap resume' is disabled.

Error message

'nodetool bootstrap resume' is disabled.

What it means

'nodetool bootstrap resume' is disabled unless the user explicitly forces it. execute() throws RuntimeException when the resume flag indicates the action was not chosen (RESET_BOOTSTRAP_PROGRESS absent or false) and --force was not passed, because resuming bootstrap resets progress and is destructive by default.

Source

Thrown at src/java/org/apache/cassandra/tools/nodetool/BootstrapResume.java:46

import static org.apache.cassandra.config.CassandraRelevantProperties.RESET_BOOTSTRAP_PROGRESS;

@Command(name = "resume", description = "Resume bootstrap streaming")
public class BootstrapResume extends AbstractCommand
{
    @Option(paramLabel = "force",
            names = { "-f", "--force" },
            description = { "Use --force to resume bootstrap regardless of ",
                            "cassandra.reset_bootstrap_progress environment variable. WARNING:",
                            "This is potentially dangerous, see CASSANDRA-17679" })
    private boolean force = false;

    @Override
    protected void execute(NodeProbe probe)
    {
        try
        {
            if ((!RESET_BOOTSTRAP_PROGRESS.isPresent() || RESET_BOOTSTRAP_PROGRESS.getBoolean()) && !force)
                throw new RuntimeException("'nodetool bootstrap resume' is disabled.");
            probe.resumeBootstrap(probe.output().out);
        }
        catch (IOException e)
        {
            throw new IOError(e);
        }
    }
}

View on GitHub (pinned to 88fd0f6a0e)

Solutions

  1. Re-run with --force: nodetool bootstrap resume --force
  2. Confirm you want to discard the interrupted bootstrap state before forcing
  3. If the intent is merely to retry streaming, consider letting the node retry bootstrap normally instead of resuming

Example fix

// before
nodetool bootstrap resume
// after
nodetool bootstrap resume --force
Defensive patterns

Strategy: try-catch

Validate before calling

// confirm intent before invoking
boolean sure = prompt("Resume bootstrap and discard progress? (y/N)").equalsIgnoreCase("y");
String[] cmd = sure ? new String[]{"bootstrap","resume","--force"} : null;

Try / catch

try {
    runNodetool("bootstrap", "resume", "--force");
} catch (RuntimeException e) {
    if (e.getMessage().contains("disabled")) {
        // retry with --force after operator confirmation
    }
}

Prevention

When it happens

Trigger: Running 'nodetool bootstrap resume' without --force; running with RESET_BOOTSTRAP_PROGRESS option unset/false; scripts invoking resume non-interactively without the force flag.

Common situations: Operators trying to restart a stuck bootstrap; automation resuming bootstrap without human confirmation; misunderstanding that resume wipes existing bootstrap progress.

Understand the failure class

Background: "--flag is required" and "must specify" CLI errors: how missing-required-flag validation works and how to fix it — this error's family across 20 libraries.

Related errors


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