[ 
https://issues.apache.org/jira/browse/STORM-3637?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17173489#comment-17173489
 ] 

Ethan Li commented on STORM-3637:
---------------------------------

Storm topology is expected to be a DAG. So looping structure is not really 
supported. 
We saw this issue in our production too recently.

> 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)

Reply via email to