[
https://issues.apache.org/jira/browse/ZOOKEEPER-1520?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13476020#comment-13476020
]
Flavio Junqueira commented on ZOOKEEPER-1520:
---------------------------------------------
Also, the sentinel being zero does not necessarily mean that there has been no
corruption. I understand that it is a pretty good guess, though, because of the
zeroing during preallocation. If it happens that there has been a corruption
and we simply considered it as a partial record. Is it acceptable to have such
a low probability corner case? I'm just pointing this out because the behavior
wouldn't be consistent if we hit this case.
> A txn log record with a corrupt sentinel byte looks like EOF
> ------------------------------------------------------------
>
> Key: ZOOKEEPER-1520
> URL: https://issues.apache.org/jira/browse/ZOOKEEPER-1520
> Project: ZooKeeper
> Issue Type: Bug
> Components: server
> Affects Versions: 3.3.5
> Environment: all
> Reporter: Bill Bridge
> Assignee: Bill Bridge
> Priority: Minor
> Labels: newbie, patch
> Fix For: 3.3.6
>
> Attachments: ant.out, checkout.out, init.out, init.out,
> ZOOKEEPER-1520.patch
>
> Original Estimate: 24h
> Remaining Estimate: 24h
>
> 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|https://issues.apache.org/jira/browse/ZOOKEEPER-1453] for a
> related issue.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira