{"record":{"id":"82fb431fae213722","repo":"apache/cassandra","slug":"failed-to-read-from","errorCode":null,"errorMessage":"Failed to read from ","messagePattern":"Failed to read from ","errorType":"exception","errorClass":"FSReadError","httpStatus":null,"severity":"critical","filePath":"src/java/org/apache/cassandra/service/accord/journal/TableRecordIterator.java","lineNumber":121,"sourceCode":"    }\n\n    boolean advance()\n    {\n        if (merged == null || !merged.hasNext())\n            return false;\n\n        try\n        {\n            Row row = (Row) merged.next();\n            segment = LongType.instance.compose(ByteBuffer.wrap((byte[]) row.clustering().get(0)));\n            offset = Int32Type.instance.compose(ByteBuffer.wrap((byte[]) row.clustering().get(1)));\n            value = row.getCell(AccordKeyspace.JournalColumns.record).buffer();\n            userVersion = Int32Type.instance.compose(row.getCell(AccordKeyspace.JournalColumns.user_version).buffer());\n            return true;\n        }\n        catch (Throwable t)\n        {\n            throw new FSReadError(\"Failed to read from \" + unmerged, t);\n        }\n    }\n\n    @Override\n    public void close()\n    {\n        if (merged != null)\n            merged.close();\n    }\n}\n","sourceCodeStart":103,"sourceCodeEnd":132,"githubUrl":"https://github.com/apache/cassandra/blob/88fd0f6a0eaed8943f05ac9e8f947882b8ddc8f1/src/java/org/apache/cassandra/service/accord/journal/TableRecordIterator.java#L103-L132","documentation":"TableRecordIterator.advance reads the current journal record row from the merged system.journal table view; any Throwable during that read is wrapped in FSReadError with the message 'Failed to read from ' + unmerged (the underlying table/iterator name). It signals a low-level storage failure while iterating Accord journal records.","triggerScenarios":"Calling advance() on the iterator when the underlying storage engine cannot read the row (corrupt sstable, missing file, failed read at the storage layer).","commonSituations":"Disk corruption or failing hardware; sstables deleted/corrupted under a running node; filesystem errors on the data directory; restoring partial backups while the node is running.","solutions":["Check the wrapped cause (getCause()) and node logs to identify the failing sstable or file.","Run nodetool scrub or repair on the system.journal table, or restore the affected files from a good backup.","Check disk health (dmesg/SMART) and free space on the data volume.","Replace the corrupted node from a replica/rebuild if corruption persists."],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":null,"typeGuard":null,"tryCatchPattern":"try { while (it.advance()) { ... } } catch (FSReadError e) { LOG.error(\"Journal read failed from {}: {}\", e.getMessage(), e.getCause(), e); /* inspect cause: sstable corruption / disk failure */ }","preventionTips":["Monitor disk health and free space on data volumes.","Do not delete or alter sstables under a running node.","Take consistent backups; verify restores offline.","Run scrub/repair on system.journal when corruption is suspected."],"tags":["accord","journal","storage","io"],"backgroundTag":"file-read-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"}