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
- Re-run with --force: nodetool bootstrap resume --force
- Confirm you want to discard the interrupted bootstrap state before forcing
- 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
- Remember resume discards bootstrap progress — always use --force deliberately
- Never put resume in unattended scripts without confirmation
- Check reset-bootstrap progress semantics before running
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
- Either --node or --ip needs to be set
- Only one of --node or --ip need to be set
- Node is not yet bootstrapped completely. Use nodetool to che
- Can't abort bootstrap for - it does not exist in cluster me
- Can't abort bootstrap for - it is alive
AI-assisted analysis of apache/cassandra@88fd0f6a0e (2026-09-10).
Data as JSON: /api/errors/98031c52566c57f0.
Report an issue: GitHub.