joyent/node — pull request #5331 by bnoordhuis (2013-04-18 10:29:28+00:00)
Title: cluster: clean up lib/cluster.js

Clean up and DRY the cluster source code. Fix a few bugs while we're
here:

* Calling cluster.Worker(env) in a non-constructor context would create
the Worker object but lost the env argument.

* Short-lived handles in long-lived worker processes were never
reclaimed, resulting in resource leaks.

* Handles in the master process are now closed when the last worker
that holds a reference to them quits. Previously, they were only
closed at cluster shutdown.

* The cluster object no longer exposes functions/properties that are
only valid in the 'other' process, e.g. cluster.fork() is no longer
exported in worker processes.

So much goodness and still manages to reduce the line count from 590
to 316.

Suggested reviewer: @indutny because he will dig it the most. The diff is kind of noisy, a side-by-side diff may work better.