[ https://issues.apache.org/jira/browse/ZOOKEEPER-2098?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14566038#comment-14566038 ]
Raul Gutierrez Segales commented on ZOOKEEPER-2098: --------------------------------------------------- [~hdeng]: typo in the commit message, it's ZOOKEEPER-2098 not ZOOKEEPER-2198 > QuorumCnxManager: use BufferedOutputStream for initial msg > ---------------------------------------------------------- > > Key: ZOOKEEPER-2098 > URL: https://issues.apache.org/jira/browse/ZOOKEEPER-2098 > Project: ZooKeeper > Issue Type: Improvement > Components: quorum, server > Affects Versions: 3.5.0 > Reporter: Raul Gutierrez Segales > Assignee: Raul Gutierrez Segales > Fix For: 3.5.1, 3.6.0 > > Attachments: ZOOKEEPER-2098.patch, ZOOKEEPER-2098.patch > > > Whilst writing fle-dump (a tool like > [zk-dump|https://github.com/twitter/zktraffic/], but to dump > FastLeaderElection messages), I noticed that QCM is using DataOutputStream > (which doesn't buffer) directly. > So all calls to write() are written immediately to the network, which means > simple messaages like two participants exchanging Votes can take a couple > RTTs! This is specially terrible for global clusters (i.e.: x-country RTTs). > The solution is to use BufferedOutputStream for the initial negotiation > between members of the cluster. Note that there are other places were > suboptimal (but not entirely unbuffered) writes to the network still exist. > I'll get those in separate tickets. > After using BufferedOutputStream we get only 1 RTT for the initial message, > so elections & time for for participants to join a cluster is reduced. -- This message was sent by Atlassian JIRA (v6.3.4#6332)