[
https://issues.apache.org/jira/browse/STORM-618?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14270330#comment-14270330
]
Jungtaek Lim commented on STORM-618:
------------------------------------
I also don't think it's a bug because users can use 'always-ack' strategy,
which is used by my team.
Only timed-out tuples will be replayed.
> Add spoutconfig option to make kafka spout process messages at most once.
> --------------------------------------------------------------------------
>
> 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)