Let's say I have an Apache Storm topology processing some tuples. I ack most of them but sometimes, due to an error, they are not processed and therefore not acked.
What happens to these 'lost' tuples? Does Storm fail them automatically, or should I do that explicitly every time?
From Storm's docs:
http://storm.apache.org/releases/1.2.2/Guaranteeing-message-processing.html
By failing the tuple explicitly, the spout tuple can be replayed faster than if you waited for the tuple to time-out. (=30 seconds by default)
Every tuple you process must be acked or failed. Storm uses memory to track each tuple, so if you don't ack/fail every tuple, the task will eventually run out of memory.