monitor: refactor/rewrite to use new async API
commitd8cd470b66ba015b0e55706a3d3ec5fbddc1c6e0
authorEric Wong <normalperson@yhbt.net>
Tue, 4 Sep 2012 23:21:40 +0000 (4 23:21 +0000)
committerEric Wong <normalperson@yhbt.net>
Sat, 10 Aug 2013 07:03:23 +0000 (10 07:03 +0000)
tree794d74faf41975862dae5d59076abd0e5542b7a1
parentd9d3a9bf6d1897d52aa0390ba105c7ae74cb9b86
monitor: refactor/rewrite to use new async API

In order to migrate to the upcoming Danga::Socket-based
HTTP API, we'll first refactor monitor to use the new API
(but preserve LWP usage behind-the-scenes).

DEBUG=1 users will see the elapsed time for all device refreshes
each time monitor runs.

While we're at it, also guard against race conditions on the
PUT/GET test by double-checking on failure.  (A long-standing
TODO item)

also squashed the following commit:

  use conn_timeout in monitor, node_timeout in other workers

  This matches the behavior in MogileFS:Server 2.65.

  It makes sense to use a different, lower timeout in monitor to
  quickly detect overloaded nodes and avoid propagating their
  liveness for a monitoring period.

  It also makes sense to use a higher value for node_timeout in
  other workers since other actions are less fault-tolerant.

  For example, a timed-out size check in create_close may cause a
  client to eventually reupload the file, creating even more load
  on the cluster.
MANIFEST
lib/MogileFS/Connection/Parent.pm [new file with mode: 0644]
lib/MogileFS/Host.pm
lib/MogileFS/Worker.pm
lib/MogileFS/Worker/Monitor.pm