Duo Zhang commented on HBASE-19976:

And here, since the procedure executor does not know much about the priority we 
defined in MasterProcesureScheduler since it is general and in another module, 
I plan to abstract the priority like this:

The ProcedureScheduler will return an int number to tell that how many priority 
levels it has, and in ProcedureExecutor, we will reserve one thread for each of 
the level except the lowest one. And when polling, we pass the priority level 
to the ProcedureScheduler to only fetch the procedures which priority is higher.

And we can introduce 3 levels in MasterProcedureScheduler, one for meta, one 
for other system table, and one for all other procedures. Notice that the 
ServerCrashProcedure should have different priority if it carries meta region 
or other system regions.


> Dead lock if the worker threads in procedure executor are exhausted
> -------------------------------------------------------------------
>                 Key: HBASE-19976
>                 URL: https://issues.apache.org/jira/browse/HBASE-19976
>             Project: HBase
>          Issue Type: Bug
>            Reporter: Duo Zhang
>            Assignee: stack
>            Priority: Critical
> See the comments in HBASE-19554. If all the worker threads are stuck in 
> AssignProcdure since meta region is offline, then the RecoverMetaProcedure 
> can not be executed and cause dead lock.

This message was sent by Atlassian JIRA

Reply via email to