zookeeper-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "sumit agrawal (JIRA)" <j...@apache.org>
Subject [jira] [Created] (ZOOKEEPER-2977) Concurrency for addAuth corrupts quorum packets
Date Mon, 12 Feb 2018 03:41:00 GMT
sumit agrawal created ZOOKEEPER-2977:
----------------------------------------

             Summary: Concurrency for addAuth corrupts quorum packets
                 Key: ZOOKEEPER-2977
                 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-2977
             Project: ZooKeeper
          Issue Type: Bug
          Components: quorum
    Affects Versions: 3.4.9
         Environment: Affects all version in 3.4.x
            Reporter: sumit agrawal


When client performs multiple times addAuth with different credential at follower concurrently,
the communication between follower gets corrupt. This causes shutdown of Follower due to the
failure.

Analysis:

In org.apache.zookeeper.server.quorum.QuorumPacket.serialize method,
 * call a_.startVector(authinfo,"authinfo"); which write the length of authinfo to packet
(suppose it writes length 1)
 * get length of authinfo to write all details in loop (here gets length as 2)

<-- Here in concurrency scenario, buffer gets corrupt having extra bytes in channel for
additional authinfo.

 

So When Leader reads next quorum packet, it reads previous extra bytes (incorrect) and possibly
identify greater size of message (as corrupt byte pattern) causes exception...

Coordination > Unexpected exception causing shutdown while sock still open (LearnerHandler.java:633)
 java.io.IOException: Unreasonable length = 1885430131

 

 

ServerCnxn.getAuthInfo returns Unmodifiable list, but while addAuthInfo, there is no check.
So this causes concurrency issue.

 

 

 

 



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Mime
View raw message