[
https://issues.apache.org/jira/browse/ZOOKEEPER-1551?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13468819#comment-13468819
]
Flavio Junqueira commented on ZOOKEEPER-1551:
---------------------------------------------
Thanks for the clarifications. I actually forgot that we send the transaction
with INFORM.
I was wondering about this part of the code:
{noformat}
+ if (!snapshotTaken) {
+ // Apply to db directly if we haven't taken the
snapshot
+ zk.processTxn(packet.hdr, packet.rec);
+ } else {
+ packetsNotCommitted.add(packet);
+ packetsCommitted.add(qp.getZxid());
+ }
{noformat}
INFORM is supposed to inform an observer of a committed transaction, so why
keep them as not committed? I'm getting the impression that this is related to
the issue of ZOOKEEPER-1549.
> Observer ignore txns that comes after snapshot and UPTODATE
> ------------------------------------------------------------
>
> Key: ZOOKEEPER-1551
> URL: https://issues.apache.org/jira/browse/ZOOKEEPER-1551
> Project: ZooKeeper
> Issue Type: Bug
> Components: server
> Affects Versions: 3.4.3
> Reporter: Thawan Kooburat
> Assignee: Thawan Kooburat
> Priority: Critical
> Fix For: 3.5.0
>
> Attachments: ZOOKEEPER-1551.patch
>
>
> In Learner.java, txns which comes after the learner has taken the snapshot
> (after NEWLEADER packet) are stored in packetsNotCommitted. The follower has
> special logic to apply these txns at the end of syncWithLeader() method.
> However, the observer will ignore these txns completely, causing data
> inconsistency.
--
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