The spout will ignore any acks or fails after the first one to account for
this possibility.

On Mon, Dec 22, 2014 at 8:10 AM, Daniel Schonfeld <[email protected]>
wrote:
>
> Hello,
>
> I am trying to understand some of the storm code base and I've run into
> this question regarding the use of RotatingMap in acker.clj and
> executor.clj.  It's probably my lack of understand of how the code works,
> but i figured there is no harm in asking.
>
> So I see that in the spout, the rotating map combined with a tick tuple
> set to TOPOLOGY-MESSAGE-TIMEOUT-SECS is used to timeout the tuple at the
> spout subsequently calling the fail() method.
>
> I also see that inside the acker the same mechanism is used.
>
> The question is what happens when the spout fails the tuple from a
> timeout, but the bolts continue processing the tuple's children so part of
> the tuple DAG.  They keep sending ACK messages to the acker and update the
> key in the RotatingMap there by causing the tuple to not timeout at the
> acker even though it already did at the spout.
>
> Is there a possibility of receiving both a fail() and an ack() at the
> *spout* given the above condition?
>
> Thanks!
> Daniel
>


-- 
Twitter: @nathanmarz
http://nathanmarz.com

Reply via email to