A txn log record with a corrupt sentinel byte looks like EOF

Details

Description

In Util.readTxnBytes() the sentinel is compared with 0x42 and if it does not match then the record is considered partially written and thus the EOF. However if it is a partial record the sentinel should be 0x00 since that is what the log is initialized with. Any other value would indicate corruption and should throw an IOException rather than indicate EOF. See ZOOKEEPER-1453 for a related issue.