Sergey Shelukhin created HBASE-22346:
----------------------------------------

             Summary: scanner priorities/deadline units are invalid for 
non-huge scanners
                 Key: HBASE-22346
                 URL: https://issues.apache.org/jira/browse/HBASE-22346
             Project: HBase
          Issue Type: Bug
            Reporter: Sergey Shelukhin


I was looking at using the priority (deadline) queue for scanner requests; what 
I see is that AnnotationReadingPriorityFunction, the only impl of the deadline 
function available, implements getDeadline as sqrt of the number of next() 
calls, from HBASE-10993.
However, CallPriorityComparator.compare, its only caller, adds that "deadline" 
value to the callA.getReceiveTime() in milliseconds...

That results in some sort of a meaningless value that I assume only make sense 
by coincidence for telling apart broad and specific classes of scanners... in 
practice next calls must be in the 1000s before it becomes meaningful vs small 
differences in ReceivedTime

When there's contention for many scanners, e.g. small scanners for meta, or 
just users creating tons of scanners to the point where requests queue up, the 
actual deadline is not accounted for and the priority function itself is 
meaningless... In fact as queueing increases, it becomes worse because 
receivedtime differences grow.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to