Affects Version/s: queryserver-6.0.0
Fix Version/s: None
The load-balancer does not work with the current PQS assembly, due to dependency (and script problems)
The proposal below would - hopefully - make it feasible to re-introduce and support it as an optional dependecy for PQS:
As for the load-balancer, you are right that this setup doesn't allow for a working load-balancer. However, it wouldn't work even if the load-balancer jar was included in the classpath. The load-balancer depends on (unshaded) zookeeper, and unshaded zookeeper is generally not available on the PQS classpath anyway (it may have been available in some old phoenix-client version, but currently both master and 4.x shades it).
Loading the load-balancer as an external service is nice in theory, but since it's compiled separately from phoenix-client, the dependency conflicts that it introduces are hard to solve.
If I were to do it, I'd:
- Refactor/Simplify loadbalancer, so that doesn't need Hadoop and Hbase deps
- Pass the Hbase Config object as in Iterable to registerServer
- Ditch the config singleton/cache, it is not useful in this context
- Preferably ditch Curator as well
- create a shaded loadbalancer jar with ZK (and curator) shaded into it
- Then prepare the PQS startup script for it, and document how to add this to PQS as an optional dependency