{"record":{"id":"fed9b38453b772e9","repo":"apache/cassandra","slug":"nothing-to-repair-for-s-in-s-keypaces-with-met","errorCode":null,"errorMessage":"Nothing to repair for %s in %s - keypaces with MetaStrategy replication are not replicated to this node","messagePattern":"Nothing to repair for (.+?) in (.+?) - keypaces with MetaStrategy replication are not replicated to this node","errorType":"exception","errorClass":"SkipRepairException","httpStatus":null,"severity":"info","filePath":"src/java/org/apache/cassandra/repair/RepairCoordinator.java","lineNumber":445,"sourceCode":"                {\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(),\n                                                            state.keyspace));\n            }\n        }\n\n        boolean shouldExcludeDeadParticipants = state.options.isForcedRepair();\n\n        if (shouldExcludeDeadParticipants)\n        {\n            Set<InetAddressAndPort> actualNeighbors = Sets.newHashSet(Iterables.filter(includeNeighbors, ctx.failureDetector()::isAlive));\n            shouldExcludeDeadParticipants = !includeNeighbors.equals(actualNeighbors);\n            if (shouldExcludeDeadParticipants) includeNeighbors = actualNeighbors;\n            else logger.info(\"{} all replicas {} considered up and healthy; clearing force flag for this job\", state.id, includeNeighbors);\n        }\n        return new NeighborsAndRanges(shouldExcludeDeadParticipants, includeNeighbors.containsAll(allNeighbors), includeNeighbors, commonRanges);\n    }\n\n    private void maybeStoreParentRepairStart(String[] cfnames)","sourceCodeStart":427,"sourceCodeEnd":463,"githubUrl":"https://github.com/apache/cassandra/blob/88fd0f6a0eaed8943f05ac9e8f947882b8ddc8f1/src/java/org/apache/cassandra/repair/RepairCoordinator.java#L427-L463","documentation":"RepairCoordinator throws a SkipRepairException when a repair is requested for a keyspace whose replicas do not include this node because the keyspace uses MetaStrategy replication (e.g. Accord/CMS metadata keyspace) and this node is not the CMS. SkipRepairException aborts this node's participation in the repair quietly rather than failing the whole session.","triggerScenarios":"Running `nodetool repair` (or StorageService.repairAsync) on a MetaStrategy-replicated keyspace from a node that is not the CMS; getNeighborsAndRanges hits the isMeta && !isCMS branch.","commonSituations":"Operators repairing all keyspaces (e.g. `nodetool repair -r`) on clusters using Accord/CMS metadata tables; nodes in a datacenter not hosting MetaStrategy ranges.","solutions":["Verify the keyspace genuinely uses MetaStrategy and exclude it from repair ranges","Run the repair from CMS nodes if MetaStrategy repair is intended","Use --ignore-unreplicated-keyspaces (-r) so unreplicated keyspaces are skipped silently","Confirm placement with `nodetool describecluster` / schema replication settings"],"exampleFix":"// before\nnodetool repair <meta_keyspace>\n// after\nnodetool repair -r <user_keyspace>  // skip unreplicated/meta keyspaces","handlingStrategy":"validation","validationCode":"KeyspaceMetadata ksm = Schema.instance.getKeyspaceMetadata(keyspace);\nif (ksm != null && ksm.params.replication.klass.getSimpleName().equals(\"MetaStrategy\") && !StorageService.instance.isCMS())\n    return; // skip repair for MetaStrategy keyspace this node doesn't replicate","typeGuard":null,"tryCatchPattern":null,"preventionTips":["List keyspaces and their replication strategy before repairing","Use --ignore-unreplicated-keyspaces (-r) when repairing all keyspaces","Only run repair from nodes holding replicas of the target keyspace"],"tags":["repair","keyspace","replication","skip"],"backgroundTag":"unsupported-operation","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"}