Glad to help the code can be a bit confusing at times.
- Bobby
On Monday, November 16, 2015 8:29 AM, Stephen Powis
<[email protected]> wrote:
Ah Thanks Bobby! That was the piece I was missing then.
On Mon, Nov 16, 2015 at 10:24 PM, Bobby Evans
<[email protected]> wrote:
> 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
><[email protected]> 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?
>
>
>