apache/cassandra · error · IllegalArgumentException
Cannot run accord only repair on %s.%s, which isn't configur
Error message
Cannot run accord only repair on %s.%s, which isn't configured for accord operations
What it means
When a repair is requested with accord-only, each repaired table must require/support Accord (metadata.requiresAccordSupport()). RepairCoordinator.validate throws IllegalArgumentException naming the offending keyspace and table.
Source
Thrown at src/java/org/apache/cassandra/repair/RepairCoordinator.java:305
{
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();
// We test to validate the start JMX notification is seen before we compute neighbors and ranges
// but in state (vtable) tracking, we rely on getNeighborsAndRanges to know where we are running repair...View on GitHub (pinned to 88fd0f6a0e)
Solutions
- List only Accord-enabled tables explicitly in the repair command.
- Enable Accord support on the table if it should participate, then retry.
- Remove the --accord-only flag and use a standard repair.
Example fix
// before nodetool repair --accord-only my_ks // after nodetool repair --accord-only my_ks accord_table
Defensive patterns
Strategy: validation
Validate before calling
boolean accordSafe = columnFamilies.stream().allMatch(cf -> Schema.instance.getTableMetadata(ks, cf).requiresAccordSupport());
Try / catch
try { repairAsync(ks, accordOnlyOptions); } catch (IllegalArgumentException e) { logger.error("accord-only repair rejected: {}", e.getMessage()); } Prevention
- List Accord-enabled tables explicitly in repair scripts
- Track which tables have Accord enabled per environment
- Fall back to standard repair when accord-only is rejected
When it happens
Trigger: Running an accord-only repair that includes a column family not configured for Accord operations.
Common situations: Keyspace-wide accord-only repair over tables that are plain (non-Accord) tables; trial deployments where Accord support was enabled on some tables only.
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 accord only repair on %s.%s, which isn't configur
- Invalid accord progress log configuration:
- Concurrent accord operations must be non-negative
- Cannot set repair_session_max_tree_depth to which is < 10, d
- Value must be >= 0 and <= 1 for repair_disk_headroom_reject_
AI-assisted analysis of apache/cassandra@88fd0f6a0e (2026-09-10).
Data as JSON: /api/errors/d0090ae92fcfb5af.
Report an issue: GitHub.