Hi all, I have a question regarding the streamer thread (Line 382-575) implementation at DFSOutputStream.java( http://grepcode.com/file/repo1.maven.org/maven2/org.apache.hadoop/hadoop-hdfs/2.7.1/org/apache/hadoop/hdfs/DFSOutputStream.java#DFSOutputStream.DataStreamer.run%28%29 ).
What's the logic of line 468-485 and line 535-548, why it check the packet is the last one twice and the comments are different, one is " // wait for all data packets have been successfully acked" and another is " // wait for the close packet has been acked". What's the close packet? My understanding of this is: If a packet is not the last in block, then the packet is sent directly, and no need to wait for ACK. If a packet is the last one, then it will first wait for all previous packet to be ACKed, and then it will send the last packet in this block( called close packet, I guess?), and then will need wait the last packet to be ACKed. Thanks a lot for your help. Best, Shu