apache/cassandra · error · IllegalArgumentException
Cannot run paxos only repair on %s.%s, which isn't configure
Error message
Cannot run paxos only repair on %s.%s, which isn't configured for paxos operations
What it means
RepairJob's constructor validates table capabilities before starting a repair: if the session requested paxos-only repair (repairData=false and repairAccord=false) but the table metadata does not support paxos operations, an IllegalArgumentException is thrown. Paxos-only repair is meaningless for tables without paxos.
Source
Thrown at src/java/org/apache/cassandra/repair/RepairJob.java:125
/**
* Create repair job to run on specific columnfamily
* @param session RepairSession that this RepairJob belongs
* @param columnFamily name of the ColumnFamily to repair
*/
public RepairJob(RepairSession session, String columnFamily)
{
this.ctx = session.ctx;
this.session = session;
this.taskExecutor = session.taskExecutor;
this.parallelismDegree = session.parallelismDegree;
this.desc = new RepairJobDesc(session.state.parentRepairSession, session.getId(), session.state.keyspace, columnFamily, session.state.commonRange.ranges);
this.ks = Keyspace.open(desc.keyspace);
this.cfs = ks.getColumnFamilyStore(columnFamily);
this.state = new JobState(ctx.clock(), desc, session.state.commonRange.endpoints);
TableMetadata metadata = this.cfs.metadata();
if ((!session.repairData && !session.repairAccord) && !metadata.supportsPaxosOperations())
throw new IllegalArgumentException(String.format("Cannot run paxos only repair on %s.%s, which isn't configured for paxos operations", cfs.keyspace.getName(), cfs.name));
if ((!session.repairData && !session.repairPaxos) && !metadata.requiresAccordSupport())
throw new IllegalArgumentException(String.format("Cannot run accord only repair on %s.%s, which isn't configured for accord operations", cfs.keyspace.getName(), cfs.name));
}
public long getNowInSeconds()
{
long nowInSeconds = ctx.clock().nowInSeconds();
if (session.previewKind == PreviewKind.REPAIRED)
{
return nowInSeconds + DatabaseDescriptor.getValidationPreviewPurgeHeadStartInSec();
}
else
{
return nowInSeconds;
}
}View on GitHub (pinned to 88fd0f6a0e)
Solutions
- Run a normal data repair instead of --repair-paxos for that table
- Restrict paxos-only repair to tables that actually use paxos (metadata.supportsPaxosOperations())
- Drop the --repair-paxos flag so repairData defaults to true
Example fix
// before nodetool repair --repair-paxos ks cf // after nodetool repair ks cf // or verify the table supports paxos first
Defensive patterns
Strategy: validation
Validate before calling
TableMetadata metadata = Schema.instance.getTableMetadata(keyspace, table);
if (metadata != null && !metadata.supportsPaxosOperations())
throw new IllegalArgumentException(keyspace + "." + table + " does not support paxos; use a normal repair"); Try / catch
try { session.submitRepair(...); }
catch (IllegalArgumentException e) {
if (e.getMessage().contains("paxos only repair")) logger.warn("Skipping non-paxos table", e);
else throw e;
} Prevention
- Check metadata.supportsPaxosOperations() before --repair-paxos
- Make per-table repair decisions instead of blanket keyspace repairs
- Review table schema options after migrations/upgrades
When it happens
Trigger: Running `nodetool repair --repair-paxos` (without data/accord flags) on a table whose metadata.supportsPaxosOperations() is false.
Common situations: Paxos-only repair scripted across an entire keyspace where most tables don't use paxos; maintenance jobs assuming every table supports paxos; schema option changes after upgrades.
Understand the failure class
Background: "Invalid value" and "allowed values are" config errors: what your library rejected and how to fix it — this error's family across 41 libraries.
Related errors
- Cannot run paxos only repair on %s.%s, which isn't configure
- Cannot run accord only repair on %s.%s, which isn't configur
- cannot repair paxos in a preview repair
- Maximum number of workers must not be negative
- Cannot set repair_session_max_tree_depth to which is < 10, d
AI-assisted analysis of apache/cassandra@88fd0f6a0e (2026-09-10).
Data as JSON: /api/errors/d4aa111a922cb70b.
Report an issue: GitHub.