Adrian Seungjin Lee created STORM-618:
-----------------------------------------

             Summary: should provide optional way to implement at-most once 
semantic
                 Key: STORM-618
                 URL: https://issues.apache.org/jira/browse/STORM-618
             Project: Apache Storm
          Issue Type: Bug
          Components: storm-kafka
    Affects Versions: 0.9.3
            Reporter: Adrian Seungjin Lee


While it's nice for kafka spout to push failed tuple back into a sorted set and 
try to process it again, this way of guaranteed message processing sometimes 
makes situation pretty bad when a failed tuple repeatedly fails in downstream 
bolts since PartitionManager#fill method tries to fetch from that offset 
repeatedly.

This is a corresponding code snippet.

    private void fill() {
...
        if (had_failed) {
            offset = failed.first();
        } else {
            offset = _emittedToOffset;
        }
...
            msgs = KafkaUtils.fetchMessages(_spoutConfig, _consumer, 
_partition, offset);
...

So there should be an option for a developer to decide if he wants to process 
failed tuple again or just skip failed tuple. One of the best thing of Storm is 
that spout together with trident can be implemented to guarantee 
at-least-once,exactly-once and at-most-once message processing.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to