Hi All, I observed that there are two kinds of ack'ing going on when a datanode receives a data block packet: 1. ack by sending the sequence number of the received block to upstream datanode; 2. also send operation status (e.g. SUCCESS, ERROR);
The seqno is chained, that is, a node will not ack the seqno unless it received the same seqno from downstream, or a -2 is sent to indicate not receiving anything from downstream datanodes. The status is forwarded, with the number of such messages increased by one traveling upstream. My question is why the seqno ack mechanism alone is not sufficient in this case. Are status acks really needed? -Bin