[ https://issues.apache.org/jira/browse/STORM-1949?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15993879#comment-15993879 ]
Roshan Naik edited comment on STORM-1949 at 5/2/17 10:05 PM: ------------------------------------------------------------- Sorry I have not been able to put time on this. Looks like some users on the mailing list are also running into this issue in production. I am unable to give this time for at least a couple weeks, but I dont want to be a blocker to getting this fix into 1.x. I have shared the topology here in the jira, would be great if we got some help on this ? [~abellina] or [~zhuoliu] would you be able to give it a shot ? was (Author: roshan_naik): Sorry I have not been able to put time on this. Looks like some users on the mailing list are also running into this issue in production. I am unable to give this sometime for at least a couple weeks, but I dont want to be a blocker to getting this fix into 1.x. I have shared the topology here in the jira, would be great if we got some help on this ? [~abellina] or [~zhuoliu] would you be able to give it a shot ? > Backpressure can cause spout to stop emitting and stall topology > ---------------------------------------------------------------- > > Key: STORM-1949 > URL: https://issues.apache.org/jira/browse/STORM-1949 > Project: Apache Storm > Issue Type: Bug > Reporter: Roshan Naik > Assignee: Alessandro Bellina > Attachments: 1.x-branch-works-perfect.png, wordcounttopo.zip > > > Problem can be reproduced by this [Word count > topology|https://github.com/hortonworks/storm/blob/perftopos1.x/examples/storm-starter/src/jvm/org/apache/storm/starter/perf/FileReadWordCountTopo.java] > within a IDE. > I ran it with 1 spout instance, 2 splitter bolt instances, 2 counter bolt > instances. > The problem is more easily reproduced with WC topology as it causes an > explosion of tuples due to splitting a sentence tuple into word tuples. As > the bolts have to process more tuples than the spout is producing, spout > needs to operate slower. > The amount of time it takes for the topology to stall can vary.. but > typically under 10 mins. > *My theory:* I suspect there is a race condition in the way ZK is being > utilized to enable/disable back pressure. When congested (i.e pressure > exceeds high water mark), the bolt's worker records this congested situation > in ZK by creating a node. Once the congestion is reduced below the low water > mark, it deletes this node. > The spout's worker has setup a watch on the parent node, expecting a callback > whenever there is change in the child nodes. On receiving the callback the > spout's worker lists the parent node to check if there are 0 or more child > nodes.... it is essentially trying to figure out the nature of state change > in ZK to determine whether to throttle or not. Subsequently it setsup > another watch in ZK to keep an eye on future changes. > When there are multiple bolts, there can be rapid creation/deletion of these > ZK nodes. Between the time the worker receives a callback and sets up the > next watch.. many changes may have undergone in ZK which will go unnoticed by > the spout. > The condition that the bolts are no longer congested may not get noticed as a > result of this. -- This message was sent by Atlassian JIRA (v6.3.15#6346)