Master may assign META region twice to two regionservers when regionserver is closed and started repeatedly in short time -------------------------------------------------------------------------------------------------------------------------
Key: HBASE-4590 URL: https://issues.apache.org/jira/browse/HBASE-4590 Project: HBase Issue Type: Bug Affects Versions: 0.90.2 Reporter: shenchunhui In the following case: 1.first,kill all the regionservers 2.then, start all the regionservers immediately 3.then, kill all the regionservers immediately 4.then, start all the regionservers immediately Master may assign META region twice , and make two regionserver carrying META region. Through logs, we find that: Before 1, Regionserver A carrys the META region, Between 2 and 3 , master receives Regionserver A startup message and is ready to assign meta region to Regionserver B But, it fails because of 3, and then reassign meta region to Regionserver C,Then ,it is successful after 4, when 4 , Regionserver C is started earlier than Regionserver A , and Regionserver A is started earlier than Regionserver C successfully online the META region. Therefore, when master receives Regionserver A startup message in 4, it consider Regionserver A carryed META region through CatalogTracker and create a MetaServerShutdownHandler In MetaServerShutdownHandler's process(), after completing split hlog, Regionserver C has already onlined META region, however it will execute the following code all the same where isCarryingMeta() return true : if (isCarryingMeta())this.services.getAssignmentManager().assignMeta(); After that, META region will online on two regionservers In order to prevent it , we should verify meta region location before assign Meta region . -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa For more information on JIRA, see: http://www.atlassian.com/software/jira