cmullaparthi/ibrowse — pull request #123 by benjaminplee (2014-11-25 02:21:58+00:00)
Title: Improve pipeline balance

Our team found that when iBrowse was under significant load (>1k req/sec) that the current implementation of the pipelining algorithm was wreaking havoc with our network-load-balancer. Load would be correctly sent out, however some connections received a largely disproportionate amount of the load. This pull request is inspired by the incomplete work done on cmullaparthi/ibrowse@d61dd9a074ac7f9d63445ac9a19670a11aaf9640 , **however** it does not include all of the additional features or possible bug fixes in that branch (without more information testing and verifying of all additional features was too large of a task for my team at the moment).

These changes rework the pipelining algorithm to more effectively balance requests across the sessions based by giving new work to the session with the smallest existing pipeline queue size _(ties broken by last completed request timestamp and pid as a last resort)_.

In addition...
* new eunit based functional tests were added to verify the balancing to the test server and other cases _(may want to move all functional testing to this or similar pattern to reduce manual verification needed when running tests)_
* Updated rebar to 2.5.2 to resolve issue with eunit tests not all being picked up
* Fixed a bug in the test http server related to shut down
* Removed unnecessary tracking of pipeline and session pool sizes; using authoritative sources instead
* Encapsulated connection pool management details to within ibrowse_lb
* Work was done while pair programming; authorship and contributor docs have been updated.

_This pull request replaces pull request #122_