[
https://issues.apache.org/jira/browse/STORM-3637?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17173489#comment-17173489
]
Ethan Li edited comment on STORM-3637 at 8/7/20, 10:01 PM:
-----------------------------------------------------------
Storm topology is expected to be a DAG. So looping structure is not really
guaranteed to work.
was (Author: ethanli):
Storm topology is expected to be a DAG. So looping structure is not really
supported.
> Looping topology structure can cause backpressure to deadlock
> -------------------------------------------------------------
>
> Key: STORM-3637
> URL: https://issues.apache.org/jira/browse/STORM-3637
> Project: Apache Storm
> Issue Type: Bug
> Components: storm-core
> Affects Versions: 2.0.0, 2.1.0
> Reporter: Simon Cooper
> Priority: Major
>
> When you have a topology structure with loops in it (BoltA and BoltB send
> tuples to each other), it can cause backpressure to deadlock.
> The scenario is that BoltA suddenly takes a long time to process a tuple (in
> our situation, it's doing a database operation). This causes the task input
> queue to fill up, setting the backpressure flag.
> BoltB, which is sending a tuple to BoltA, then cannot send, and the tuple is
> held in the emit queue. This blocks any tuples behind it, and also stops
> BoltB from executing. This means the input queue to BoltB will build up,
> until that backpressure flag is also set - and then when BoltA next wants to
> send a tuple to BoltB, it will irrevocably deadlock.
--
This message was sent by Atlassian Jira
(v8.3.4#803005)