James Taylor created HBASE-12790:
------------------------------------
Summary: Support fairness across parallelized scans
Key: HBASE-12790
URL: https://issues.apache.org/jira/browse/HBASE-12790
Project: HBase
Issue Type: Bug
Reporter: James Taylor
Some HBase clients parallelize the execution of a scan to reduce latency in
getting back results. This can lead to starvation with a loaded cluster and
interleaved scans, since the RPC queue will be ordered and processed on a FIFO
basis. For example, if there are two clients, A & B that submit largish scans
at the same time. Say each scan is broken down into 100 scans by the client
(broken down into equal depth chunks along the row key), and the 100 scans of
client A are queued first, followed immediately by the 100 scans of client B.
In this case, client B will be starved out of getting any results back until
the scans for client A complete.
One solution to this is to use the attached AbstractRoundRobinQueue instead of
the standard FIFO queue. The queue to be used could be (maybe it already is)
configurable based on a new config parameter. Using this queue would require
the client to have the same identifier for all of the 100 parallel scans that
represent a single logical scan from the clients point of view. With this
information, the round robin queue would pick off a task from the queue in a
round robin fashion (instead of a strictly FIFO manner) to prevent starvation
over interleaved parallelized scans.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)