Hi:
      The document said Flink can guarantee processing each tuple exactly-once, 
but I can not understand how it works.
   For example, In Fig 1, C is running between snapshot n-1 and snapshot 
n(snapshot n hasn't been generated). After snapshot n-1, C has processed tuple 
x1, x2, x3 and already outputted to user,  then C failed and it recoveries from 
snapshot n-1. In my opinion, x1, x2, x3 will be processed and outputted to user 
again. My question is how Flink guarantee x1,x2,x3 are processed and outputted 
to user only once?


[cid:image001.png@01D0E0F6.B3DCC0F0]
Fig 1.
Thanks for answing.

Reply via email to