brooklyncentral/brooklyn — pull request #289 by aledsage (2012-08-23 15:18:03+00:00)
Title: Feature/nginx cluster

Main thing is adding the interface LoadBalancer, and the class LoadBalancerCluster.

- adds LoadBalancer interface, implemented by AbstractController
- NginxController implements LoadBalancer
- LoadBalancerCluster implements LoadBalancer
- Cleans up some nginx tests
- Adds NginxClusterIntegrationTest
- Adds NginxLightIntegrationTest
- Reduces race between nginx reload() and stop()

It also includes commits for:

- Converts AbstractController from groovy to java
- Adds AbstractEntity.subscribeToMembers
- DynamicCluster takes EntityFactory

I've raised some issues that I encountered (not addressed here):
- Issue #285: IllegalStateException in MutexSupport.release, from JavaStartStopSshDriver.installJava
- Issue #286: Benign (incorrect) warnings about "already managed" when starting app
- Issue #287: NPE in NginxController when cluster members added concurrent with nginx.start()

And this issue is partially addressed here, to reduce the race:
- Issue #288: nginx stop problem: concurrent stop() and reload() can leave nginx running