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)