You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@storm.apache.org by "Ethan Li (Jira)" <ji...@apache.org> on 2020/08/07 22:01:00 UTC

[jira] [Commented] (STORM-3637) Looping topology structure can cause backpressure to deadlock

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