Hi everybody, I asked this question before in storm ustlist but not got answer. So I posted it here again...
My question is about the tracking algorithm in Guaranteeing-message-processing<https://www.google.com/url?q=https%3A%2F%2Fgithub.com%2Fnathanmarz%2Fstorm%2Fwiki%2FGuaranteeing-message-processing&sa=D&sntz=1&usg=AFQjCNE0e9AjEDnrBLDrzwfi8YZZfBkBNA> . In that article, it said "An acker task stores a map from a spout tuple id to a pair of values. The first value is the task id that created the spout tuple which is used later on to send completion messages. The second value is a 64 bit number called the "ack val". The ack val is a representation of the state of the entire tuple tree, no matter how big or how small. It is simply the *xor of all tuple ids* that have been created and/or acked in the tree." But when I try to test some simple topology with debug mode ON I found some interesting log messages: 2013-10-29 11:09:00 task [INFO] Emitting: spout-1 default [SOMEMESSAGE] 2013-10-29 11:09:00 task [INFO] Emitting: spout-1 __ack_init [-7415442840981449264 -678585584408453014 4] As you can see: after spout emit out a tuple, it send a message to acker. So far so good. But the problem is there are* two *64 bit number in the message. After some experiment I think the first one (-7415442840981449264) is the tuple id and the other (-678585584408453014) is used for ack val calculation. The third number 4 is the task id. So it's conflict with the statement above "*xor of all tuple ids"* in the Guaranteeing-message-processing<https://www.google.com/url?q=https%3A%2F%2Fgithub.com%2Fnathanmarz%2Fstorm%2Fwiki%2FGuaranteeing-message-processing&sa=D&sntz=1&usg=AFQjCNE0e9AjEDnrBLDrzwfi8YZZfBkBNA> documentation, right? The documentation is wrong or I misunderstand something? Thanks!