Description
I spoke to Jesse offline about this.
The priority of index updates isn't being set correctly because of the use of CoprocessorHConnection (which all coprocessors use if they create an HTable via the CPEnvironment).
Specifically the flow happens like this: the CoprocessorHTableFactory attempts to set the connection qos factory, but it is ignored because the CoprocessorHConnection is used (instead of a standard HConnection) and the #getClient method just goes straight into the rpc scheduler of the HRegionServer, if its on the same server. This allows the region to be directly accessed, but without actually going over the loopback or serializing any information.
However, this means it ignores the configured rpccontroller factory and the override setting of the rpc priority. We probably shouldn't be runtime changing the configuration - instead we should probably be using some other serialized information.
The primary fix would seems to be that the regionserver needs to be configured with the IndexQosRpcControllerFactory and then use a static map (or cache of the index metadata) to set the qos for the index servers.
Attachments
Attachments
Issue Links
- relates to
-
PHOENIX-938 Use higher priority queue for index updates to prevent deadlock
- Closed