{"record":{"id":"8cab56b10b2e5cd0","repo":"apache/cassandra","slug":"cannot-run-paxos-only-repair-on-s-s-which-isn-t","errorCode":null,"errorMessage":"Cannot run paxos only repair on %s.%s, which isn't configured for paxos operations","messagePattern":"Cannot run paxos only repair on (.+?)\\.(.+?), which isn't configured for paxos operations","errorType":"validation","errorClass":"IllegalArgumentException","httpStatus":null,"severity":"error","filePath":"src/java/org/apache/cassandra/repair/RepairCoordinator.java","lineNumber":302,"sourceCode":"            skip(e.getMessage());\n        }\n        catch (Throwable e)\n        {\n            notifyError(e);\n            fail(e.getMessage());\n        }\n    }\n\n    private static void validate(RepairOption options, List<ColumnFamilyStore> columnFamilies)\n    {\n        if (options.paxosOnly() && options.accordOnly())\n            throw new IllegalArgumentException(\"Cannot specify a repair as both paxos only and accord only\");\n\n        for (ColumnFamilyStore cfs : columnFamilies)\n        {\n            TableMetadata metadata = cfs.metadata();\n            if (options.paxosOnly() && !metadata.supportsPaxosOperations())\n                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));\n\n            if (options.accordOnly() && !metadata.requiresAccordSupport())\n                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));\n        }\n    }\n\n    private void runMayThrow() throws Throwable\n    {\n        state.phase.setup();\n        ctx.repair().recordRepairStatus(state.cmd, ParentRepairStatus.IN_PROGRESS, ImmutableList.of());\n\n        List<ColumnFamilyStore> columnFamilies = getColumnFamilies();\n        validate(state.options, columnFamilies);\n        String[] cfnames = columnFamilies.stream().map(cfs -> cfs.name).toArray(String[]::new);\n\n        this.traceState = maybeCreateTraceState(columnFamilies);\n        notifyStarting();\n        NeighborsAndRanges neighborsAndRanges = getNeighborsAndRanges();","sourceCodeStart":284,"sourceCodeEnd":320,"githubUrl":"https://github.com/apache/cassandra/blob/88fd0f6a0eaed8943f05ac9e8f947882b8ddc8f1/src/java/org/apache/cassandra/repair/RepairCoordinator.java#L284-L320","documentation":"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.","triggerScenarios":"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).","commonSituations":"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.","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."],"exampleFix":"// before\nnodetool repair --paxos-only my_ks\n// after\nnodetool repair --paxos-only my_ks paxos_enabled_table","handlingStrategy":"validation","validationCode":"boolean paxosSafe = columnFamilies.stream().allMatch(cf -> Schema.instance.getTableMetadata(ks, cf).supportsPaxosOperations());\n","typeGuard":null,"tryCatchPattern":"try { repairAsync(ks, paxosOnlyOptions); } catch (IllegalArgumentException e) { logger.error(\"paxos-only repair rejected: {}\", e.getMessage()); }","preventionTips":["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"],"tags":["repair","validation","paxos"],"backgroundTag":"invalid-argument-value","analyzedSha":"88fd0f6a0eaed8943f05ac9e8f947882b8ddc8f1","analyzedAt":"2026-09-10T07:29:22.284Z","contentChangedAt":"2026-09-10T07:29:22.284Z","schemaVersion":2},"datasetVersion":"2026-09-14T16:17:12.679Z"}