You are correct about the put restarting the clock for removing the tuple tree 
from the acker map, but the timeout code in the acker does not trigger a 
timeout of a tuple, it just purges the tuple from the ackers memory.  The 
timeout code for a tuple is actually in the spout.  It has a corresponding 
RotatingMap
https://github.com/apache/storm/blob/master/storm-core/src/clj/backtype/storm/daemon/executor.clj#L493
It does a put once, when the tuple is emitted, and when it expires the fail is 
called.
 - Bobby 


     On Monday, November 16, 2015 6:46 AM, Stephen Powis 
<spo...@salesforce.com> wrote:
   

 I'm trying to better understand the acker behavior and how it deals
with tuple time outs.  I've read the documentation on the storm
website, but from my rudimentary knowledge of clojure, it seems like
the docs and the code don't completely align (or I'm completely
missing something)

The short of it is I'm wondering if the line linked below in acker.clj
resets the tuple timeout value every time a bolt acks a tuple:
https://github.com/apache/storm/blob/master/storm-core/src/clj/backtype/storm/daemon/acker.clj#L65

It seems like for every tuple coming into the acker, it calls
rotatingMap.put() on the instance, which in turn resets its timeout
countdown.

Does this sound correct?


  

Reply via email to