{"record":{"id":"864818cf5ed129f1","repo":"apache/cassandra","slug":"nothing-to-repair-for-s-in-s-aborting","errorCode":null,"errorMessage":"Nothing to repair for %s in %s - aborting","messagePattern":"Nothing to repair for (.+?) in (.+?) - aborting","errorType":"exception","errorClass":"RepairException","httpStatus":null,"severity":"error","filePath":"src/java/org/apache/cassandra/repair/RepairCoordinator.java","lineNumber":428,"sourceCode":"            EndpointsForRange includeForRange = ctx.repair().filterNeighbors(allForRange, range,\n                                                                             state.options.getDataCenters(),\n                                                                             state.options.getHosts());\n\n            if (includeForRange.isEmpty())\n            {\n                if (state.options.ignoreUnreplicatedKeyspaces())\n                {\n                    logger.info(\"{} Found no neighbors for range {} for {} - ignoring since repairing with --ignore-unreplicated-keyspaces\", state.id, range, state.keyspace);\n                    continue;\n                }\n                else if (isMeta && !isCMS)\n                {\n                    logger.info(\"{} Repair requested for keyspace {}, which is only replicated by CMS members - ignoring\", state.id, state.keyspace);\n                    continue;\n                }\n                else\n                {\n                    throw RepairException.warn(String.format(\"Nothing to repair for %s in %s - aborting\", range, state.keyspace));\n                }\n            }\n            addRangeToNeighbors(commonRanges, range, includeForRange);\n            includeNeighbors.addAll(includeForRange.endpoints());\n        }\n\n        if (includeNeighbors.isEmpty())\n        {\n            if (state.options.ignoreUnreplicatedKeyspaces())\n            {\n                throw new SkipRepairException(String.format(\"Nothing to repair for %s in %s - unreplicated keyspace is ignored since repair was called with --ignore-unreplicated-keyspaces\",\n                                                            state.options.getRanges(),\n                                                            state.keyspace));\n            }\n            else if (isMeta && !isCMS)\n            {\n                throw new SkipRepairException(String.format(\"Nothing to repair for %s in %s - keypaces with MetaStrategy replication are not replicated to this node\",\n                                                            state.options.getRanges(),","sourceCodeStart":410,"sourceCodeEnd":446,"githubUrl":"https://github.com/apache/cassandra/blob/88fd0f6a0eaed8943f05ac9e8f947882b8ddc8f1/src/java/org/apache/cassandra/repair/RepairCoordinator.java#L410-L446","documentation":"Thrown during repair setup when computing neighbors and ranges: a common range requested for repair has no neighbors to repair with (beyond CMS-only replication in accord mode), so there is literally nothing to repair and the coordinator aborts with a RepairException.","triggerScenarios":"getNeighborsAndRanges finds a common range whose includeForRange endpoints set is empty (or replicated only by CMS members) while the user explicitly requested repair of that range/keyspace.","commonSituations":"Repairing a keyspace right after changing replication strategy (replication factor reduced to 1 for the range), repairing a range that no longer belongs to this node, or running repair on a keyspace whose replication was changed without running a full repair/rebuild.","solutions":["Verify the keyspace replication settings (ALTER KEYSPACE ... RF) and run a full repair after RF changes.","Check that the requested range is actually owned by this node (nodetool describering / ring).","If the keyspace was dropped or re-created, refresh the repair request to the current range map.","Run repair with the correct keyspace and ranges via nodetool repair or the storage service API.","Rebootstrap/decommission correctly: rebuild nodes whose token ranges changed."],"exampleFix":null,"handlingStrategy":"validation","validationCode":"// Confirm the keyspace still has replicas covering the requested range:\n// nodetool describering -- keyspace <ks>\n// SELECT replication FROM system_schema.keyspaces WHERE keyspace_name='<ks>';","typeGuard":null,"tryCatchPattern":"try {\n    repair(keyspace, ranges);\n} catch (RepairException e) {\n    if (e.getMessage().startsWith(\"Nothing to repair\")) {\n        // refresh ring/ranges or fix RF before retrying\n    }\n}","preventionTips":["Run a full repair immediately after changing replication factor.","Verify node ownership with nodetool ring/describering before scoped repairs.","Keep repair automation in sync with topology changes.","Avoid repairing dropped/recreated keyspaces with stale range lists."],"tags":["repair","ring","topology","cassandra"],"backgroundTag":"nothing-to-repair","analyzedSha":"88fd0f6a0eaed8943f05ac9e8f947882b8ddc8f1","analyzedAt":"2026-09-10T07:29:22.284Z","contentChangedAt":"2026-09-10T07:29:22.284Z","schemaVersion":2},"datasetVersion":"2026-09-17T15:17:12.973Z"}