Normally there are only two things you can do when you have issues. Retry or Discard. For timeouts the retry is a reasonable thing to do. For more other failures (corrupt/bad data in tuple for eg.) discarding makes more sense. In your bolt, instead of calling fail() you could simply ack() to prevent replay and either log the bad tuple and discard or redirect to a different downstream path. Having said that, it may be a potentially useful feature to add in Storm. Perhaps we can introduce a discard() method that the bolts can call instead of ack() or fail() in such cases.
-roshan 2018-04-20 9:30 GMT+02:00 Java Progarammer <[email protected]>: Hi, I have few doubts regarding how retries work in storm 1) In spouts fail method I want to distinguish between the tuples that are failed because they timed out or they failed because one of the bolt called fail() on them. Does storm have some inbuilt mechanism for this ? 2) When calling faill(inputTuple) in bolt if I change some thing in inputTuple before calling fail method on it will I able to access the modified inputTuple in spouts fail method ? Thanks in advance. Thanks, Sharique.
