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
