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.

 

 

Reply via email to