{"record":{"id":"1526c932f8a2f953","repo":"apache/cassandra","slug":"invalid-recoverable-crc-mismatch-detected-whil","errorCode":null,"errorMessage":"{} invalid, recoverable CRC mismatch detected while reading messages (corrupted self-contained frame)","messagePattern":"(.+?) invalid, recoverable CRC mismatch detected while reading messages \\(corrupted self-contained frame\\)","errorType":"console","errorClass":null,"httpStatus":null,"severity":"warning","filePath":"src/java/org/apache/cassandra/net/InboundMessageHandler.java","lineNumber":259,"sourceCode":"        callbacks.onHeaderArrived(size, header, currentTimeNanos - header.createdAtNanos, NANOSECONDS);\n        receivedBytes += buf.remaining();\n        largeMessage = new LargeMessage(size, header, expired);\n        largeMessage.supply(frame);\n        return true;\n    }\n\n    protected void processCorruptFrame(CorruptFrame frame) throws Crc.InvalidCrc\n    {\n        if (!frame.isRecoverable())\n        {\n            corruptFramesUnrecovered++;\n            throw new Crc.InvalidCrc(frame.readCRC, frame.computedCRC);\n        }\n        else if (frame.isSelfContained)\n        {\n            receivedBytes += frame.frameSize;\n            corruptFramesRecovered++;\n            noSpamLogger.warn(\"{} invalid, recoverable CRC mismatch detected while reading messages (corrupted self-contained frame)\", id());\n        }\n        else if (null == largeMessage) // first frame of a large message\n        {\n            receivedBytes += frame.frameSize;\n            corruptFramesUnrecovered++;\n            noSpamLogger.error(\"{} invalid, unrecoverable CRC mismatch detected while reading messages (corrupted first frame of a large message)\", id());\n            throw new Crc.InvalidCrc(frame.readCRC, frame.computedCRC);\n        }\n        else // subsequent frame of a large message\n        {\n            processSubsequentFrameOfLargeMessage(frame);\n            corruptFramesRecovered++;\n            noSpamLogger.warn(\"{} invalid, recoverable CRC mismatch detected while reading a large message\", id());\n        }\n    }\n\n    String id(boolean includeReal)\n    {","sourceCodeStart":241,"sourceCodeEnd":277,"githubUrl":"https://github.com/apache/cassandra/blob/88fd0f6a0eaed8943f05ac9e8f947882b8ddc8f1/src/java/org/apache/cassandra/net/InboundMessageHandler.java#L241-L277","documentation":"Warns that a CRC check failed while reading a self-contained inbound frame; because the frame is self-contained, the handler can skip the corrupt frame and keep the connection alive (corruptFramesRecovered). One message in that frame is lost, but the stream continues.","triggerScenarios":"processCorruptFrame is called when frame.readCRC != frame.computedCRC for a self-contained (uncompressed-CRC-protected) frame that is not part of a large message.","commonSituations":"Bit flips on the wire or in NIC memory, faulty network hardware, disk/corruption when using compression, or (historically) a co-located process corrupting memory; can also surface during heavy network errors.","solutions":["Check NIC/switch/cable health and interface error counters (ethtool, netstat -i).","Enable internode compression consistency or verify both nodes agree on internode_compression settings.","Correlate with hardware events (EDAC/MCE logs) if recurring on the same host.","Monitor metrics org.apache.cassandra.net.InboundMessageHandler corruptFramesRecovered; escalate if it grows continuously.","If frequent, capture traffic and open a support case; persistent CRC errors indicate hardware, not software."],"exampleFix":null,"handlingStrategy":"retry","validationCode":null,"typeGuard":null,"tryCatchPattern":"// Not catchable in user code; detect via metrics:\n// org.apache.cassandra.metrics:type=InboundMessageHandler name=CorruptFramesRecovered\n// Alert on rate > 0 and re-trigger the affected operation (repair, schema sync).","preventionTips":["Monitor corrupt frame metrics and alert on growth.","Keep NIC firmware/drivers updated; check ethtool error counters regularly.","Use consistent, supported network hardware between DCs.","Verify internode compression settings match on all nodes."],"tags":["network","corruption","crc","internode"],"backgroundTag":"checksum-mismatch","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"}