There is no conflict. As you have quoted: "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.”
So storm needs three variables to track the tuple tree of one spout tuple: 1. the spout tuple id (-7415442840981449264) 2. the ackval(-678585584408453014) 3. the task id(4) On 2013年11月23日, at 下午1:15, fubupc <fub...@gmail.com> wrote: > 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. > > 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 documentation, right? The documentation is > wrong or I misunderstand something? > > Thanks!