[ https://issues.apache.org/jira/browse/PHOENIX-3360?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
William Yang updated PHOENIX-3360: ---------------------------------- Attachment: PHOENIX-3360-v3.PATCH bq. I think Ankit Singhal was saying that the priorities are set correct for all RS to RS communication, but looking at the patch for this, it does not seem to be the case (the indexer changes the regionserver's configuration though). Before the v2 patch, it is true because ALL inter-RS requests are made with higher priority, no matter what they really are. But after not, as we don't change the region server's configurations. Only the requests executed by HTableInterface that created by CoprocessorHTableFactory will have higher priority. As PHOENIX-3271, see UngroupedAggregateRegionObserver#doPostScannerOpen()'s diff, an HTable object is created directly with the env's configuration. As this configuration no longer contains the RPC class config entry, then the writes will not have higher priority. In order to make it right, we have to use a properly configured table object. But I haven't figured out an elegant way to do this. bq. With William Yang's patch the short-circuit write optimization will not work because the connection created is not a coprocessor connection. This can be solved easily, see v3 patch. > Secondary index configuration is wrong > -------------------------------------- > > Key: PHOENIX-3360 > URL: https://issues.apache.org/jira/browse/PHOENIX-3360 > Project: Phoenix > Issue Type: Bug > Reporter: Enis Soztutar > Assignee: Rajeshbabu Chintaguntla > Priority: Critical > Fix For: 4.10.0 > > Attachments: PHOENIX-3360.patch, PHOENIX-3360-v2.PATCH, > PHOENIX-3360-v3.PATCH > > > IndexRpcScheduler allocates some handler threads and uses a higher priority > for RPCs. The corresponding IndexRpcController is not used by default as it > is, but used through ServerRpcControllerFactory that we configure from Ambari > by default which sets the priority of the outgoing RPCs to either metadata > priority, or the index priority. > However, after reading code of IndexRpcController / ServerRpcController it > seems that the IndexRPCController DOES NOT look at whether the outgoing RPC > is for an Index table or not. It just sets ALL rpc priorities to be the index > priority. The intention seems to be the case that ONLY on servers, we > configure ServerRpcControllerFactory, and with clients we NEVER configure > ServerRpcControllerFactory, but instead use ClientRpcControllerFactory. We > configure ServerRpcControllerFactory from Ambari, which in affect makes it so > that ALL rpcs from Phoenix are only handled by the index handlers by default. > It means all deadlock cases are still there. > The documentation in https://phoenix.apache.org/secondary_indexing.html is > also wrong in this sense. It does not talk about server side / client side. > Plus this way of configuring different values is not how HBase configuration > is deployed. We cannot have the configuration show the > ServerRpcControllerFactory even only for server nodes, because the clients > running on those nodes will also see the wrong values. -- This message was sent by Atlassian JIRA (v6.3.15#6346)