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
When a repair is requested with paxos-only, every repaired table must support paxos operations (per TableMetadata). RepairCoordinator.validate throws IllegalArgumentException naming the keyspace/table that is not paxos-enabled.
Source
Thrown at src/java/org/apache/cassandra/repair/RepairCoordinator.java:302
skip(e.getMessage());
}
catch (Throwable e)
{
notifyError(e);
fail(e.getMessage());
}
}
private static void validate(RepairOption options, List<ColumnFamilyStore> columnFamilies)
{
if (options.paxosOnly() && options.accordOnly())
throw new IllegalArgumentException("Cannot specify a repair as both paxos only and accord only");
for (ColumnFamilyStore cfs : columnFamilies)
{
TableMetadata metadata = cfs.metadata();
if (options.paxosOnly() && !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 (options.accordOnly() && !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));
}
}
private void runMayThrow() throws Throwable
{
state.phase.setup();
ctx.repair().recordRepairStatus(state.cmd, ParentRepairStatus.IN_PROGRESS, ImmutableList.of());
List<ColumnFamilyStore> columnFamilies = getColumnFamilies();
validate(state.options, columnFamilies);
String[] cfnames = columnFamilies.stream().map(cfs -> cfs.name).toArray(String[]::new);
this.traceState = maybeCreateTraceState(columnFamilies);
notifyStarting();
NeighborsAndRanges neighborsAndRanges = getNeighborsAndRanges();View on GitHub (pinned to 88fd0f6a0e)
Solutions
- Restrict the repair's column families to paxos-enabled tables only.
- Enable paxos support on the table if appropriate, then retry.
- Drop the --paxos-only flag and run a normal repair instead.
Example fix
// before nodetool repair --paxos-only my_ks // after nodetool repair --paxos-only my_ks paxos_enabled_table
Defensive patterns
Strategy: validation
Validate before calling
boolean paxosSafe = columnFamilies.stream().allMatch(cf -> Schema.instance.getTableMetadata(ks, cf).supportsPaxosOperations());
Try / catch
try { repairAsync(ks, paxosOnlyOptions); } catch (IllegalArgumentException e) { logger.error("paxos-only repair rejected: {}", e.getMessage()); } Prevention
- Query table metadata before requesting paxos-only repair
- Prefer keyspace-wide standard repair unless paxos-only is specifically needed
- Document which tables in the deployment are paxos-enabled
When it happens
Trigger: Running a paxos-only repair that includes a column family whose metadata reports supportsPaxosOperations() == false (e.g. a table without conditionally-updateable semantics or with paxos disabled).
Common situations: Issuing keyspace-wide paxos-only repair where one table in the keyspace is not paxos-enabled; scripts that assume all tables in a keyspace share paxos support.
Understand the failure class
Background: "Must be a positive integer", "Invalid value", "Unsupported": the invalid-argument-value error family, when a library rejects the value you pass — this error's family across 35 libraries.
Related errors
- Cannot run paxos only repair on %s.%s, which isn't configure
- Cannot set repair_session_max_tree_depth to which is < 10, d
- Value must be >= 0 and <= 1 for repair_disk_headroom_reject_
- Cannot specify a repair as both paxos only and accord only
- Cannot run accord only repair on %s.%s, which isn't configur
AI-assisted analysis of apache/cassandra@88fd0f6a0e (2026-09-10).
Data as JSON: /api/errors/8cab56b10b2e5cd0.
Report an issue: GitHub.