[
https://issues.apache.org/jira/browse/STORM-3514?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16942263#comment-16942263
]
Stig Rohde Døssing commented on STORM-3514:
-------------------------------------------
I took a look at where Storm actually uses the "topology.message.timeout.secs"
parameter, and it is only used here
https://github.com/apache/storm/blob/v1.2.3/storm-core/src/clj/org/apache/storm/daemon/executor.clj#L361
What happens in that line is when we decide whether or not to enable tick
tuples for an executor. Tick tuples are sent periodically to bolts for
timekeeping, and are used for timing out tuples in the spout, and to make sure
that ackers don't keep around data for failed tuples for longer than necessary.
Tick tuples can only affect acking of tuples in the sense that they can cause
the ackers to throw away data about still live tuples. As you may note in the
linked code, ackers still receive ticks even when
"topology.message.timeout.secs" is false. This may or may not have been
intentional, but it's probably why you're seeing this issue. When the normal
tuple timeout (30s) is reached, the acker will throw away data about your live
tuple, so when it receives acks it doesn't know what to do with them.
We can fix this by also disabling tick tuples for ackers if the
"topology.message.timeout.secs" is false.
As an aside, you may consider upgrading to Storm 2.0.0, as it has a new
backpressure mechanism that doesn't depend on the ackers, so you could probably
disable acking entirely if you upgraded to that version.
> "topology.enable.message.timeouts: false" has no effect on ackers
> -----------------------------------------------------------------
>
> Key: STORM-3514
> URL: https://issues.apache.org/jira/browse/STORM-3514
> Project: Apache Storm
> Issue Type: Bug
> Affects Versions: 1.2.3
> Reporter: Evgheni Melman
> Priority: Major
>
> "topology.enable.message.timeouts: false" does prevent tuples from being
> failed if not acked in "topology.message.timeout.secs" seconds, but it still
> prevents __ackers from acking anchored tuples to the spout. When used with
> "topology.max.spout.pending" this effectively stalls the spout completely as
> the tuple is neither failed, nor acked.
--
This message was sent by Atlassian Jira
(v8.3.4#803005)