zookeeper-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From yuzhou li <iamzhou...@gmail.com>
Subject Re: Dose client read dirty data in zk release-3.5.4 ?
Date Thu, 14 Jun 2018 05:51:21 GMT
The main code is at Learner.java syncWithLeader like this:
if (qp.getType() == Leader.DIFF) {
    LOG.info("Getting a diff from the leader 0x{}",
    snapshotNeeded = false;

    if (!writeToTxnLog) {
        if (pif.hdr.getZxid() != qp.getZxid()) {
            LOG.warn("Committing " + qp.getZxid() + ", but next
proposal is " + pif.hdr.getZxid());
        } else {
            zk.processTxn(pif.hdr, pif.rec);
    } else {

zk.startup();//this will create the processor chain,and waiting
request will be processed after the zk startup

if (zk instanceof FollowerZooKeeperServer) {
    FollowerZooKeeperServer fzk = (FollowerZooKeeperServer)zk;
    for(PacketInFlight p: packetsNotCommitted) {
        fzk.logRequest(p.hdr, p.rec);
    for(Long zxid: packetsCommitted) {

yuzhou li <iamzhoug37@gmail.com> 于2018年6月14日周四 下午1:47写道:
> Hi,everyone.
>    I git pull the tag release-3.5.4 from github. Before I read the
> 3.4.6 version code, I found 3.5.4 has some changes when the learner
> synchronzied with leader.
> If using DIFF way to synchronize histories, the follower or observer
> will put the data in a queue, then start zkServer, then get all data
> from the queue, and process the data as a normol request,after all
> data is processd, the server is synchronized with leader completely.
> But at zkServe start moment, the client request can be process by this
> server,but this server has no data because the data is stored at the
> queue currently, so the client will read dirty data.
>    Does this situation will happend?Or there is some point I has not find?

View raw message