During the discussion of https://github.com/apache/storm/pull/700 the issue of allowing timeout extension in case of unavailable external components (such as a web service) came up.
The current implementation makes tuples fail at a set interval, regardless of whether or not replaying them is necessary. This can be irritating in topologies that emit to multiple services, since one hanging service will cause replays to hit all the working services as well.
I suggest adding a resetTimeout function to IOutputCollector, which will make the relevant ackers and spouts reinsert the tuple tree information in their pending maps.
The intended usage is that a bolt can call this function on an interval if it needs to delay expiration, for example if it needs to retry calling a web server a few times. It may also be useful for slow topologies that want Storm to detect hanging/dropped tuples faster than the max expected complete latency of the topology.