> On Dec. 2, 2014, 11:43 p.m., fpj wrote: > > src/java/main/org/apache/zookeeper/ClientCnxnSocketNetty.java, line 188 > > <https://reviews.apache.org/r/27244/diff/22/?file=774526#file774526line188> > > > > Could you elaborate on what you're trying to do with this NIOLock? I'm > > not sure what you mean with race cocnditions in the comment. > > Hongchao Deng wrote: > 1. The intuition is that in NIO client all reads and writes are > sequential. > 2. One problem I found: (1) packet is removed from outgoingQueue; (2) > before the packet is added to pendingQueue; (3) sendThread.readResponse > throws exception. > 3. I am wondering what the purpose of pendingQueue is except for checking > and if we can remove it. AFAICT that's the only concurrency concern. > > Hongchao Deng wrote: > I come up with a better way if the pendingQueue is the only concern. It > looks like pendingQueue doesn't care about ordering. So I can add packets to > pendingQueue before writing to channel. > > fpj wrote: > Check SendThread.readResponse() in ClientCnxn, pls. > > Hongchao Deng wrote: > I did. I figure out it holds the assumptions: > 1. pendingQueue only takes non-priming packets. > 2. pendingQueue ordering is the same as packets sent in. > > I would re-clarify my point that I can remove the lock as long as the > only interaction between read and write is the pendingQueue. :) > > fpj wrote: > I've been revisiting the code and I can't think of any other potential > problem.
Cool. I think my new patch is making too many changes. I will change the last thing you pointed out and update them only. Thanks! - Hongchao ----------------------------------------------------------- This is an automatically generated e-mail. To reply, visit: https://reviews.apache.org/r/27244/#review63604 ----------------------------------------------------------- On Dec. 3, 2014, 10:20 p.m., Hongchao Deng wrote: > > ----------------------------------------------------------- > This is an automatically generated e-mail. To reply, visit: > https://reviews.apache.org/r/27244/ > ----------------------------------------------------------- > > (Updated Dec. 3, 2014, 10:20 p.m.) > > > Review request for zookeeper. > > > Repository: zookeeper-git > > > Description > ------- > > ZOOKEEPER-2069 > > > Diffs > ----- > > build.xml bb5ff4f > src/java/main/org/apache/zookeeper/ClientCnxn.java b4ece07 > src/java/main/org/apache/zookeeper/ClientCnxnSocket.java 5ca0ba7 > src/java/main/org/apache/zookeeper/ClientCnxnSocketNIO.java adb27ee > src/java/main/org/apache/zookeeper/ClientCnxnSocketNetty.java PRE-CREATION > src/java/main/org/apache/zookeeper/ZooKeeper.java dd13cc9 > src/java/test/org/apache/zookeeper/test/NettyNettySuiteBase.java > PRE-CREATION > src/java/test/org/apache/zookeeper/test/NettyNettySuiteHammerTest.java > PRE-CREATION > src/java/test/org/apache/zookeeper/test/NettyNettySuiteTest.java > PRE-CREATION > > Diff: https://reviews.apache.org/r/27244/diff/ > > > Testing > ------- > > 1. use LinkedBlockingDeque. > > > Thanks, > > Hongchao Deng > >