Github user srdo commented on the issue:

    https://github.com/apache/storm/pull/2790
  
    @uddhavarote That's not how it works. The stream you emit to doesn't 
matter. As long as the tuple you emit from the KafkaBolt is anchored to the 
input tuple, the tuple will be replayed from the spout and go to the entire 
topology again if processing fails after the KafkaBolt.
    
    Basically the choice you will have is to use`OutputCollector.emit(input, 
new Values(...))`, in which case the tuple gets replayed from the spout if 
processing fails in your bolt, or `(OutputCollector.emit(new Values(...))`, in 
which case the tuple does not get replayed and is lost if processing fails in 
your bolt.
    
    That said, your application probably needs to deal with potential duplicate 
writes to Kafka anyway, so it might not be a big deal. I'm fine with adding the 
output collector and tuple to the callback. Please raise an issue at 
https://issues.apache.org/jira and feel free to submit a PR here that makes the 
change.


---

Reply via email to