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

Andrew Kyle Purtell resolved HBASE-9673.
----------------------------------------
    Resolution: Incomplete

> Request priority revamp
> -----------------------
>
>                 Key: HBASE-9673
>                 URL: https://issues.apache.org/jira/browse/HBASE-9673
>             Project: HBase
>          Issue Type: Brainstorming
>            Reporter: Michael Stack
>            Priority: Major
>
> Currently in the server we have three (four?) queues ranging from Normal (0) 
> to High priority (100) with Replication priority falling between the two.
> Priority is determined by introspecting the incoming invocation to pull out 
> which region is targeted by the query and/or to read a 'priority' annotation 
> that is on the invocation's method -- e.g. closeRegion/openRegion have 
> @QosPriority(priority=HConstants.HIGH_QOS)  These annotations are awkwardly 
> on the java implementation, not on the protobuf Service.
> The current means of introspection determining priority running the silly 
> guava function is costly done on each call.  The annotations being on the 
> java implementation rather than on the pb Service or in the pbs themselves 
> requires somersaults extracting priority. If they were on the latter, then 
> they would be more readily available down in rpc where invocation/scheduling 
> is done.
> There is no way currently for a mapreduce task to tell hbase it is a low 
> priority query nor for a webservice coming in the door to say I need a bit of 
> info now -- and I don't care who you push aside.
> A suggestion of [~eclark]'s is that we just have the client set the priority. 
>  This has much merit.  We could keep it down low just do what the server 
> currently does -- the introspection, annotations -- on client side and have 
> it then set the priority into the request header where it will be readily 
> available on the server when it is trying to figure what to do w/ the 
> incoming call (high, low, or in-between).
> We could even expose this in our API.
> Above is about revamp of how the server figures the static priority of a call 
> (HBASE-9612 actually adds priority to the RpcController and into the 
> RequestHeader).  Server could just respect the client priority for now.
> Later we'd want the server to adjust priorities based off what it thought of 
> the user -- trusted or an alien -- as well as factor in its current load.  An 
> overloaded server might reject low priority calls (Had a good chat on QoS w/ 
> [~toffer] about QoS at the corner of Van Ness and Market last night).
> Later calls might come w/ an advertised SLA.  The server might reject calls 
> it thought it could not service in time rather than take on more load (based 
> off history of similarly sized queries, etc.).



--
This message was sent by Atlassian Jira
(v8.20.7#820007)

Reply via email to