{"record":{"id":"ff30463aa80dbb2f","repo":"apache/cassandra","slug":"could-not-replay-save-point","errorCode":null,"errorMessage":"{} could not replay save point {}","messagePattern":"(.+?) could not replay save point (.+?)","errorType":"console","errorClass":null,"httpStatus":null,"severity":"warning","filePath":"src/java/org/apache/cassandra/service/accord/AccordCommandStore.java","lineNumber":973,"sourceCode":"            RedundantBefore rdb;\n            try\n            {\n                logger.info(\"{} loading state from {}\", this, savePoint);\n                mxd = readOne(new File(savePoint, \"max_decidedrx\"), maxDecidedRX);\n                mxc = readOne(new File(savePoint, \"max_conflicts\"), maxConflicts);\n                {\n                    File rjbf = new File(savePoint, \"reject_before\");\n                    if (rjbf.exists())\n                        mxc = mxc.with(readOne(rjbf, rejectBefore));\n                }\n                dll = readList(new File(savePoint, \"listeners\"), txnListener);\n                dpl = readList(new File(savePoint, \"progress_log\"), progressLogState);\n                rgi = rangeIndex.load(new File(savePoint, \"range_index\"));\n                rdb = readOne(new File(savePoint, \"redundant_before\"), redundantBefore);\n            }\n            catch (Throwable t)\n            {\n                logger.warn(\"{} could not replay save point {}\", this, savePoint, t);\n                return null;\n            }\n\n            if (journal instanceof AccordJournal && ((AccordJournal)journal).maxDescriptor() <= segment)\n                Invariants.expect(rdb.equals(unsafeGetRedundantBefore()));\n\n            rangeIndex.restore(rgi);\n            unsafeSetMaxDecidedRX(mxd);\n            unsafeSetMaxConflicts(mxc);\n            ((DefaultLocalListeners) listeners).restore(dll);\n            boolean unsetCatchup = ((DefaultProgressLog) progressLog).setModeExclusive(safeStore, CATCH_UP);\n            ((DefaultProgressLog) progressLog).restore(safeStore, dpl);\n            if (unsetCatchup)\n                ((DefaultProgressLog) progressLog).unsetModeExclusive(CATCH_UP);\n            return Map.entry(id, segment + 1);\n        });\n    }\n","sourceCodeStart":955,"sourceCodeEnd":991,"githubUrl":"https://github.com/apache/cassandra/blob/88fd0f6a0eaed8943f05ac9e8f947882b8ddc8f1/src/java/org/apache/cassandra/service/accord/AccordCommandStore.java#L955-L991","documentation":"Replaying an on-disk save point (progress_log, range_index, redundant_before files) failed with an exception, so the loader logs the warning and returns null, falling back to replaying the full journal instead of starting from the save point. This is a performance degradation signal, not fatal.","triggerScenarios":"Loading an AccordCommandStore from a save point directory where any of progress_log, range_index, or redundant_before files is corrupt, truncated, unreadable, or fails deserialization.","commonSituations":"Corrupted or partially-written save point files after a crash; disk errors; save point deleted mid-replay; permission problems on the journal directory.","solutions":["Rely on full journal replay (automatic fallback) - startup continues","Check disk/filesystem health for the savepoint directory","Delete the corrupt save point so future checkpoints are written cleanly (after backup)"],"exampleFix":null,"handlingStrategy":"fallback","validationCode":"// check savepoint files are readable before store load\nFile f = new File(savePoint, \"progress_log\");\nif (!f.canRead()) log.warn(\"save point unreadable, full replay expected\");","typeGuard":null,"tryCatchPattern":"catch (Throwable t) { /* accept null return; startup falls back to full journal replay */ }","preventionTips":["Monitor filesystem health of the accord journal directory","Avoid deleting save point files manually","Use fsync-safe backups of the data directory"],"tags":["accord","journal","replay","corruption"],"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-14T16:17:12.679Z"}