[
https://issues.apache.org/jira/browse/ZOOKEEPER-1675?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13618596#comment-13618596
]
Alexander Shraer commented on ZOOKEEPER-1675:
---------------------------------------------
I don't think it matters whether its synchronous or asynchronous. I'm not
suggesting that sync returns a value, so you can continue ignoring the result.
I'm only proposing to change how sync is implemented internally. Following the
sync the user will still invoke a read just like now.
BTW, an alternative (which I think you're referring to) is to create a "strong
read" that will return a value and will be atomic, but that doesn't solve the
problem of sync. It can also be implemented using a multiop of sync+read as I
think you're implying.
> Make sync a quorum operation
> ----------------------------
>
> Key: ZOOKEEPER-1675
> URL: https://issues.apache.org/jira/browse/ZOOKEEPER-1675
> Project: ZooKeeper
> Issue Type: Bug
> Affects Versions: 3.4.0, 3.5.0
> Reporter: Alexander Shraer
>
> sync + read is supposed to return at least the latest write that completes
> before the sync starts. This is true if the leader doesn't change, but when
> it does it may not work. The problem happens when the old leader L1 still
> thinks that it is the leader but some other leader L2 was already elected and
> committed some operations. Suppose that follower F is connected to L1 and
> invokes a sync. Even though L1 responds to the sync, the recent operations
> committed by L2 will not be flushed to F so a subsequent read on F will not
> see these operations.
> To prevent this we should broadcast the sync like updates.
> This problem is also mentioned in Section 4.4 of the ZooKeeper peper (but the
> proposed solution there is insufficient to solve the 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