{"record":{"id":"3e5ca10920591a3d","repo":"apache/cassandra","slug":"failed-to-send-a-clean-up-message-to","errorCode":null,"errorMessage":"Failed to send a clean up message to {}","messagePattern":"Failed to send a clean up message to (.+?)","errorType":"console","errorClass":null,"httpStatus":null,"severity":"warning","filePath":"src/java/org/apache/cassandra/service/ActiveRepairService.java","lineNumber":861,"sourceCode":"                        public void onResponse(Message msg)\n                        {\n                            logger.trace(\"Successfully cleaned up {} parent repair session on {}.\", parentRepairSession, endpoint);\n                        }\n\n                        @Override\n                        public void onFailure(InetAddressAndPort from, RequestFailure failure)\n                        {\n                            logger.debug(\"Failed to clean up parent repair session {} on {}. The uncleaned sessions will \" +\n                                         \"be removed on a node restart. This should not be a problem unless you see thousands \" +\n                                         \"of messages like this.\", parentRepairSession, endpoint);\n                        }\n                    };\n                    RepairMessage.sendMessageWithRetries(ctx, message, Verb.CLEANUP_MSG, endpoint, loggingCallback);\n                }\n            }\n            catch (Exception exc)\n            {\n                logger.warn(\"Failed to send a clean up message to {}\", endpoint, exc);\n            }\n        }\n        ParticipateState state = participate(parentRepairSession);\n        if (state != null)\n            state.phase.success(\"Cleanup message recieved\");\n    }\n\n    private void failRepair(TimeUUID parentRepairSession, String errorMsg)\n    {\n        throw failRepairException(parentRepairSession, errorMsg);\n    }\n\n    private RuntimeException failRepairException(TimeUUID parentRepairSession, String errorMsg)\n    {\n        participateFailed(parentRepairSession, errorMsg);\n        removeParentRepairSession(parentRepairSession);\n        return new RuntimeException(errorMsg);\n    }","sourceCodeStart":843,"sourceCodeEnd":879,"githubUrl":"https://github.com/apache/cassandra/blob/88fd0f6a0eaed8943f05ac9e8f947882b8ddc8f1/src/java/org/apache/cassandra/service/ActiveRepairService.java#L843-L879","documentation":"When finalizing a repair session, ActiveRepairService sends CLEANUP_MSG messages to participating endpoints to release repair resources. If sending to an endpoint throws (node down, IO error), it logs this warning with the exception and continues with the remaining endpoints. Stale repair sessions on the unreachable node are later cleaned up by session timeout.","triggerScenarios":"cleanupParentsAndSkipTrash / repair completion path iterates endpoints and RepairMessage.sendMessageWithRetries throws for a host that is down or unreachable via messaging service.","commonSituations":"Node crashed or was decommissioned mid-repair; network partition during repair teardown; transient messaging failures at session end.","solutions":["Verify the endpoint's health (nodetool status) and restart it if down.","Confirm the repair session on that node expires and cleans itself (repair_session timeout), no manual action usually needed.","Check network/firewall between nodes if the warning recurs across repairs."],"exampleFix":null,"handlingStrategy":"retry","validationCode":"// before starting repair, ensure all participants are reachable\nfor (InetAddress ep : participants) {\n    if (!FailureDetector.instance.isAlive(ep))\n        throw new IllegalStateException(\"Participant down: \" + ep);\n}","typeGuard":null,"tryCatchPattern":"// tolerate cleanup send failure; rely on session expiry\ntry { sendCleanup(endpoint); }\ncatch (Exception e) { logger.warn(\"cleanup to {} deferred to session timeout\", endpoint, e); }","preventionTips":["Avoid decommissioning nodes mid-repair; wait for repair completion first.","Ensure repair_session_max_ms/timeout defaults so stale sessions self-clean.","Check inter-node connectivity and firewall rules if this warning recurs."],"tags":["repair","network","messaging","cleanup"],"backgroundTag":"network-request-failed","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"}