Github user roshannaik commented on the issue: https://github.com/apache/storm/pull/2829 @HeartSaVioR 1) pendingEmitsQ prevents nextTuple() from blocking when downstream queue is full. It holds the overflow emits (one or more) that occurred within a **single** nextTuple() invocation. If Spout executor notices this Q is not empty, it will try to process any ACKs before entering wait strategy. Purpose of this Q is to prevent deadlock under BP. 2) **topology.max.spout.pending** Looked like a candidate for elimination given that STORM-2306's BP. Although it is not absolutely necessary to use it in 2.0.. during benchmarking I noticed that it could sometimes have sizable impact on performance. Why ? it remains a mystery. It is now a perf related tunable (in ACK mode).. and not really a BP mechanism.
---