I’m writing my own spout, backed by a persistent store outside of storm.

What I need to know is whether Storm guarantees that a spout will always be 
called with ack() or fail() for a given tuple. I.e. even if the spout process 
dies, another one will make the call.

If this is true, then I can remove the record from storage in nextTuple() and 
put it back on in fail(), and I’ll be sure I’ll never lose any even in case of 
failure.

If this is not true, then I need to keep the record in the underlying storage 
after nextTuple() and don’t take it off until ack(). This just makes it harder 
because subsequent nextTuple() calls have to know to skip the in progress ones.

So, I hope Storm provides this guarantee.

Thanks

Reply via email to