[ 
https://issues.apache.org/jira/browse/PHOENIX-3360?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Samarth Jain updated PHOENIX-3360:
----------------------------------
    Attachment: indexlogging.patch

[~mujtabachohan] and I tested locally with HBase 0.98 that we still need the 
hbase.rpc.controllerfactory.class config on the server side for the index 
updates to use the IndexRpcServer.handler thread pool. 

I used the attached patch to log the thread name that is executing the index 
updates. Only with both the configs hbase.rpc.controllerfactory.class and 
hbase.region.server.rpc.scheduler.factory.class in place, we saw the Indexer 
using the IndexRpcServer thread pool. 

{code}
2017-04-14 03:29:47,519 INFO  [0,queue=0,port=60020] index.Indexer -  Indexer# 
preBatchMutate Thread: IndexRpcServer.handler=20,queue=0,port=60020
2017-04-14 03:29:47,519 INFO  [0,queue=0,port=60020] index.Indexer -  Indexer# 
preBatchMutateWithExceptions Thread: 
IndexRpcServer.handler=20,queue=0,port=60020
2017-04-14 03:29:47,520 INFO  [0,queue=0,port=60020] index.Indexer -  Indexer# 
doPre Thread: IndexRpcServer.handler=20,queue=0,port=60020
2017-04-14 03:29:47,521 INFO  [0,queue=0,port=60020] index.Indexer -  Indexer# 
postBatchMutate Thread: IndexRpcServer.handler=20,queue=0,port=60020
2017-04-14 03:29:47,521 INFO  [0,queue=0,port=60020] index.Indexer -  Indexer# 
doPost Thread: IndexRpcServer.handler=20,queue=0,port=60020
2017-04-14 03:29:47,521 INFO  [0,queue=0,port=60020] index.Indexer -  Indexer# 
doPostWithExceptions Thread: IndexRpcServer.handler=20,queue=0,port=60020
2017-04-14 03:29:47,524 INFO  [0,queue=0,port=60020] index.Indexer -  Indexer# 
postPut Thread: IndexRpcServer.handler=20,queue=0,port=60020
2017-04-14 03:29:47,524 INFO  [0,queue=0,port=60020] index.Indexer -  Indexer# 
doPost Thread: IndexRpcServer.handler=20,queue=0,port=60020
2017-04-14 03:29:47,524 INFO  [0,queue=0,port=60020] index.Indexer -  Indexer# 
doPostWithExceptions Thread: IndexRpcServer.handler=20,queue=0,port=60020
{code}

We also saw the call being dispatched by the PhoenixRpcScheduler. 

{code}
2017-04-14 03:29:47,815 INFO  [.reader=8,port=60020] ipc.PhoenixRpcScheduler - 
Call dispatched with index priority: callId: 5381 service: ClientService 
methodName: Multi size: 449 connection: 10.225.197.8:36044 param: region= 
X,,1492134552092.abe122d44a69701b81d304da339522de., for 1 actions and 1st row 
key=sdfdsfsdfdsfs djf dsajkfhads kfjlh ljddsfdsfsf dfg dfjkghh connection: 
10.225.197.8:36044
{code}

> 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: William Yang
>            Priority: Critical
>             Fix For: 4.10.0
>
>         Attachments: ConfCP.java, indexlogging.patch, PHOENIX-3360.patch, 
> PHOENIX-3360-v2.PATCH, PHOENIX-3360-v3.PATCH, PHOENIX-3360-v4.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)

Reply via email to