phoenix-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Enis Soztutar (JIRA)" <>
Subject [jira] [Commented] (PHOENIX-3360) Secondary index configuration is wrong
Date Tue, 07 Feb 2017 21:11:41 GMT


Enis Soztutar commented on PHOENIX-3360:

Thanks [~yhxx511]. [~rajeshbabu] did you take a look at William's v2 patch? 

bq. I've read PHOENIX-3271, unfortunately, this patch will break the assumption that all cross
RS calls are made with higher priority, as we didn't change the coprocessor env's configuration,
we just created a new hbase connection with specific configurations.
I think [] 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). 

bq. The optimal way to make things right is to use separate handler queues for read and write.
Sharing the same handler queue with index requests might not be the best idea
Here (,
I was arguing that we should instead do a "task pool" for Phoenix, and execute the upsert-select
like requests there. Indeed we cannot rely on the user to configure read/write pools. 

> Secondary index configuration is wrong
> --------------------------------------
>                 Key: PHOENIX-3360
>                 URL:
>             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
> 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 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

View raw message