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.
---