This patch is still somewhat WIP for a couple of reasons:
1) Still debugging test failures.
2) This will more scrutiny from knowledgable folks!
There are some subtle bugs with the current implementation of LeaderElector, best demonstrated by the following test:
1) Start up a small single-node solrcloud. it should be become Overseer.
2) kill -9 the solrcloud process and immediately start a new one.
3) The new process won't become overseer. The old process's ZK leader elect node has not yet disappeared, and the new process fails to set appropriate watches.
NOTE: this is only reproducible if the new node is able to start up and join the election quickly.