Details
Description
In Phoenix + HBase clusters, the hbase-site.xml configuration will point to a custom rpc controller factory which is a Phoenix-specific one to configure the priorities for index and system catalog table.
However, sometimes these Phoenix-enabled clusters are used from pure-HBase client applications resulting in ClassNotFoundExceptions in application code or MapReduce jobs. Since hbase configuration is shared between Phoenix-clients and HBase clients, having different configurations at the client side is hard.
We can instead try to load up the RPCControllerFactory from conf, and if not found, fallback to the default one (in case this is a pure HBase client). In case Phoenix is already in the classpath, it will work as usual.
This does not affect the rpc scheduler factory since it is only used at the server side.