{"record":{"id":"f1a6fe964817914f","repo":"apache/cassandra","slug":"did-not-get-response-from-s-not-continuing-with","errorCode":null,"errorMessage":"Did not get response from %s - not continuing with migration. Ignore down hosts with --ignore <host>","messagePattern":"Did not get response from (.+?) - not continuing with migration\\. Ignore down hosts with --ignore <host>","errorType":"exception","errorClass":"IllegalStateException","httpStatus":null,"severity":"error","filePath":"src/java/org/apache/cassandra/tcm/migration/Election.java","lineNumber":136,"sourceCode":"            Keyspaces.KeyspacesDiff diff = Keyspaces.diff(currentState.schema.getKeyspaces(), priorState.schema.getKeyspaces());\n            Collection<Mutation> mutations = SchemaKeyspace.convertSchemaDiffToMutations(diff, FBUtilities.timestampMicros());\n            SchemaKeyspace.applyChanges(mutations);\n\n            ClusterMetadataService.instance().log().unsafeSetCommittedFromGossip(priorState);\n            throw e;\n        }\n    }\n\n    private void initiate(CMSInitializationRequest initializationRequest, Set<InetAddressAndPort> sendTo, ClusterMetadata metadata, boolean verifyAllPeersMetadata)\n    {\n        logger.info(\"No previous migration detected, initiating\");\n        Collection<Pair<InetAddressAndPort, CMSInitializationResponse>> metadatas = MessageDelivery.fanoutAndWait(messaging, sendTo, Verb.TCM_INIT_MIG_REQ, initializationRequest);\n        if (metadatas.size() != sendTo.size())\n        {\n            Set<InetAddressAndPort> responded = metadatas.stream().map(p -> p.left).collect(Collectors.toSet());\n            String msg = String.format(\"Did not get response from %s - not continuing with migration. Ignore down hosts with --ignore <host>\", Sets.difference(sendTo, responded));\n            logger.warn(msg);\n            throw new IllegalStateException(msg);\n        }\n\n        if (verifyAllPeersMetadata)\n        {\n            Set<InetAddressAndPort> mismatching = metadatas.stream().filter(p -> !p.right.metadataMatches).map(p -> p.left).collect(Collectors.toSet());\n            if (!mismatching.isEmpty())\n            {\n                String msg = String.format(\"Got mismatching cluster metadatas. Check logs on peers (%s) for details of mismatches. Aborting migration.\", mismatching);\n                throw new IllegalStateException(msg);\n            }\n        }\n    }\n\n    private void finish(Set<InetAddressAndPort> sendTo)\n    {\n        CMSInitializationRequest.Initiator currentInitiator = initiator.get();\n        if (currentInitiator != null &&\n            Objects.equals(currentInitiator.endpoint, FBUtilities.getBroadcastAddressAndPort()) &&","sourceCodeStart":118,"sourceCodeEnd":154,"githubUrl":"https://github.com/apache/cassandra/blob/88fd0f6a0eaed8943f05ac9e8f947882b8ddc8f1/src/java/org/apache/cassandra/tcm/migration/Election.java#L118-L154","documentation":"During CMS migration, Election.initiate fans out a TCM_INIT_MIG_REQ to all candidate peers (minus ignored ones) and waits for responses. If any candidate did not answer, migration aborts with an IllegalStateException listing the unresponsive hosts, because all peers must be reachable to safely migrate to TCM.","triggerScenarios":"Calling nominateSelf when at least one non-ignored candidate node is down, partitioned, or too slow to answer Verb.TCM_INIT_MIG_REQ before the fanout timeout.","commonSituations":"Nodes that were decommissioned but remain in the candidate list; network/firewall issues blocking the TCM messaging port; a node overloaded or in GC making it miss the response window.","solutions":["Restart the down peers, then retry the migration command","Re-run with the unreachable hosts passed via the --ignore flag (they are removed from sendTo)","Verify messaging connectivity (incl. TLS settings) between the initiator and all candidates","Retry the command; transient GC pauses or slow nodes may respond on a second attempt"],"exampleFix":"// before\nnodetool cms initiate   // fails because 10.0.0.5 is down\n// after\nnodetool cms initiate --ignore 10.0.0.5","handlingStrategy":"retry","validationCode":"// pre-check peer reachability before initiating\nsendTo.forEach(ep -> { if (!messaging.isConnected(ep)) throw new IllegalStateException(\"Peer down: \" + ep); });","typeGuard":null,"tryCatchPattern":"try { initiate(req, sendTo, metadata, verify); } catch (IllegalStateException e) { // retry, possibly with the unresponsive hosts added to --ignore }","preventionTips":["Verify all candidate nodes are up (nodetool status) before starting migration","Pre-decommission dead nodes or list them in --ignore","Check firewall/TLS connectivity on the TCM messaging port","Retry once for transient GC/network pauses"],"tags":["cassandra","tcm","network"],"backgroundTag":"request-timeout","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"}