[ https://issues.apache.org/jira/browse/HBASE-28683?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Duo Zhang resolved HBASE-28683. ------------------------------- Fix Version/s: 2.7.0 3.0.0-beta-2 2.6.1 2.5.10 Hadoop Flags: Reviewed Resolution: Fixed Pushed to all active branches. Thanks [~vjasani] for reviewing! > Only allow one TableProcedureInterface for a single table to run at the same > time for some special procedure types > ------------------------------------------------------------------------------------------------------------------ > > Key: HBASE-28683 > URL: https://issues.apache.org/jira/browse/HBASE-28683 > Project: HBase > Issue Type: Improvement > Components: master, proc-v2 > Reporter: Duo Zhang > Assignee: Duo Zhang > Priority: Critical > Labels: pull-request-available > Fix For: 2.7.0, 3.0.0-beta-2, 2.6.1, 2.5.10 > > > We have a table lock in the MasterProcedureScheduler, which is designed to > only allow one procedure to run at the same time when they require exclusive > lock. > But there is a problem that for availability, usually we can not always hold > the exclusive lock through the whole procedure life time, as if so, we can > not execute region assignment for this table too. The solution is to set > holdLock to false, which means we will release the table lock after one > execution cycle. > In this way, it is possible that different table procedures may execute at > the same time, which could mess things up. > Especially that, in HBASE-28522, we find out that it is even impossible for > DisableTableProcedure to hold the exclusive lock all the time. If the steps > for DisableTableProcedure can be overlapped with other procedures like > ModifyTableProcedure or even EnableTableProcedure, things will be > definationly messed up... > So we need to find another way to ensure that for a single table, only one of > these procedures can be executed at the same time. -- This message was sent by Atlassian Jira (v8.20.10#820010)