tracker: client fairness, backpressure, and expiry
commit05cdf17041374690f588a3efe381a3463a44d013
authorEric Wong <e@80x24.org>
Fri, 7 Apr 2017 00:02:18 +0000 (7 00:02 +0000)
committerEric Wong <e@80x24.org>
Fri, 7 Apr 2017 00:06:31 +0000 (7 00:06 +0000)
treefb1b695482e7ce605ca30bbb44665ba96b8fe7be
parent56b39b80740be3ce3a420aaf3b9ed67b6df4572f
tracker: client fairness, backpressure, and expiry

Make client query processing less aggressive and more fair by
only enqueueing a single worker request at a time.  Pipelined
requests in the read buffer will only be handled after
successful writes, and any incomplete writes will block further
request processing.

Furthermore, add a watchdog for clients we're writing to
expire clients which are not reading our responses.

Danga::Socket allows clients to use an infinite amount of
space for buffering, and it's possible for dead sockets
to go undetected for hours by the OS.

Use a watchdog to kick out any sockets which have made no
forward progress after two minutes.
lib/MogileFS/Connection/Client.pm
lib/MogileFS/ProcManager.pm