[ 
https://issues.apache.org/jira/browse/HBASE-21375?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16666392#comment-16666392
 ] 

Allan Yang commented on HBASE-21375:
------------------------------------

I have a concern that before, one table's region operations can be executed by 
several workers concurrently, but now, since one worker will iterate over the 
TableQueue, it will execute the procedures one by one. If it is a very big 
table, the modify table maybe not tolerable.  

> Revisit the lock and queue implementation in MasterProcedureScheduler
> ---------------------------------------------------------------------
>
>                 Key: HBASE-21375
>                 URL: https://issues.apache.org/jira/browse/HBASE-21375
>             Project: HBase
>          Issue Type: Sub-task
>          Components: proc-v2
>            Reporter: Duo Zhang
>            Assignee: Duo Zhang
>            Priority: Major
>             Fix For: 3.0.0, 2.2.0
>
>         Attachments: HBASE-21375-UT.patch, HBASE-21375-UT2.patch, 
> HBASE-21375-v1.patch, HBASE-21375-v2.patch, HBASE-21375.patch
>
>
> The problem for the old implementation is that we will only check the first 
> procedure in a queue to see if it could run, if it can not, we will remove 
> the queue from run queue. So when adding procedure to the scheduler, we have 
> to try hard to put the procedure which can be executed in front of the queue, 
> if there are corner cases where we fail to do so, it will likely lead to a 
> dead lock, that's why we have the tricky code when loading procedures and try 
> to add them into the scheduler, and also lots of 'if' in the doAdd method of 
> MasterProcedureScheduler. But this is still not enough to make things right, 
> so finally [~allan163] and I decided to change the logic in doPoll method, 
> where we use a loop to find whether there is a procedure can be executed, not 
> only the first one.



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

Reply via email to