[ https://issues.apache.org/jira/browse/STORM-886?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14715351#comment-14715351 ]
ASF GitHub Bot commented on STORM-886: -------------------------------------- Github user revans2 commented on a diff in the pull request: https://github.com/apache/storm/pull/700#discussion_r38022111 --- Diff: storm-core/src/clj/backtype/storm/daemon/executor.clj --- @@ -671,7 +689,19 @@ user-context (:user-context task-data) sampler? (sampler) execute-sampler? (execute-sampler) - now (if (or sampler? execute-sampler?) (System/currentTimeMillis))] + now (if (or sampler? execute-sampler?) (System/currentTimeMillis)) + receive-queue (:receive-queue executor-data)] + (if (and ((:storm-conf executor-data) TOPOLOGY-BACKPRESSURE-ENABLE) + (> (.population receive-queue) high-watermark) + (not @(:backpressure executor-data))) + (do (reset! (:backpressure executor-data) true) + (log-debug "executor " (:executor-id executor-data) " is congested, set backpressure flag true") + (disruptor/notify-backpressure-checker (:backpressure-trigger (:worker executor-data))))) + (if (and ((:storm-conf executor-data) TOPOLOGY-BACKPRESSURE-ENABLE) + (< (.population receive-queue) low-watermark) + @(:backpressure executor-data)) + (do (reset! (:backpressure executor-data) false) + (disruptor/notify-backpressure-checker (:backpressure-trigger (:worker executor-data))))) --- End diff -- I am a bit confused. Why are we doing this as part of the metrics tick? What does that have to do with back pressure at all? > Automatic Back Pressure > ----------------------- > > Key: STORM-886 > URL: https://issues.apache.org/jira/browse/STORM-886 > Project: Apache Storm > Issue Type: Improvement > Reporter: Robert Joseph Evans > Assignee: Zhuo Liu > Attachments: an simple example for backpressure.png, backpressure.png > > > This new feature is aimed for automatic flow control through the topology DAG > since different components may have unmatched tuple processing speed. > Currently, the tuples may get dropped if the downstream components can not > process as quickly, thereby causing a waste of network bandwidth and > processing capability. In addition, it is difficult to tune the > max.spout.pending parameter for best backpressure performance. Therefore, an > automatic back pressure scheme is highly desirable. > Heron proposed a form of back pressure that does not rely on acking or max > spout pending. Instead spouts throttle not only when max.spout.pending is > hit, but also if any bolt has gone over a high water mark in their input > queue, and has not yet gone below a low water mark again. There is a lot of > room for potential improvement here around control theory and having spouts > only respond to downstream bolts backing up, but a simple bang-bang > controller like this is a great start. -- This message was sent by Atlassian JIRA (v6.3.4#6332)