zookeeper-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "十一飘" <864107...@qq.com>
Subject may be a bug
Date Sun, 05 Jul 2020 08:44:54 GMT
Hi, I may be find a bug in the file org.apache.zookeeper.server.quorum.FastLeaderElection.java
when I read the source code of Zookeeper. These codes as follow are copied from the file between
255th and 282th line. ——————————————————————————————————————————————————————————————————————————boolean
backCompatibility40 = (capacity == 40);

response.buffer.clear();

// Instantiate Notification and set its attributes
Notification n = new Notification();

int rstate = response.buffer.getInt(); //4
long rleader = response.buffer.getLong(); //8
long rzxid = response.buffer.getLong(); //8
long relectionEpoch = response.buffer.getLong(); //8

long rpeerepoch;

int version = 0x0;
QuorumVerifier rqv = null;

try {
    if (!backCompatibility28) {
        rpeerepoch = response.buffer.getLong(); //8
        if (!backCompatibility40) { // here may be a bug 
            /*
             * Version added in 3.4.6
             */

            version = response.buffer.getInt(); //4
        } else {
            LOG.info("Backward compatibility mode (36 bits), server id: {}", response.sid);
        }
    } else {
        LOG.info("Backward compatibility mode (28 bits), server id: {}", response.sid);
        rpeerepoch = ZxidUtils.getEpochFromZxid(rzxid);
    } ——————————————————————————————————————————————————————————————————————————————————————————————The
variable "backCompatibility40 = (capacity == 40)", but "if (!backCompatibility40) {version
= response.buffer.getInt();}" The variable response.buffer has been read 36 bytes before this
line "if (!backCompatibility40)". It should be "if (backCompatibility40)", then "version =
response.buffer.getInt()". It can be seen the log of "Backward compatibility mode (36 bits)".Thank
you for your reply and explain me if I am wrong.
Mime
  • Unnamed multipart/alternative (inline, 8-Bit, 0 bytes)
View raw message