TOLERATE_TORN_TAIL

Stop at the first record that does not validate, provided nothing readable follows it.

This is the honest reading of an interrupted write. The engine appends a commit and then fsyncs it; if it dies between those two steps, the tail of the log holds bytes that were never acknowledged to anybody. Dropping them loses nothing anyone was told about, and the file is truncated back to its last good offset on reopen so the next append does not sit behind rubbish.

What this mode still refuses to do is silently lose acknowledged data. A record whose checksum fails while a valid record follows it is corruption, not a torn tail, and is reported. So is a gap in the sequence numbers, and so is any fault in a log that is not the newest one — a sealed log was fsynced before the next one was created, so it cannot have a torn tail.

Properties

Link copied to clipboard
Link copied to clipboard