Simon Cooper created STORM-3637:
-----------------------------------

             Summary: 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.1.0, 2.0.0
            Reporter: Simon Cooper


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