Xiaolin Ha created HBASE-19937:
----------------------------------

             Summary: Enable rsgroup NPE in CreateTableProcedure
                 Key: HBASE-19937
                 URL: https://issues.apache.org/jira/browse/HBASE-19937
             Project: HBase
          Issue Type: Bug
          Components: rsgroup
    Affects Versions: 2.0.0-beta-2
            Reporter: Xiaolin Ha
            Assignee: Xiaolin Ha


When enable rsgroup, it may throws NPE as follows,

2018-02-02,16:12:45,688 ERROR 
org.apache.hadoop.hbase.procedure2.ProcedureExecutor: CODE-BUG: Uncaught 
runtime exception: pid=7, state=RUNNABLE:CREATE_TABLE_ASSIGN_REGIONS; 
CreateTableProcedure table=hbase:rsgroup
java.lang.NullPointerException
 at 
org.apache.hadoop.hbase.rsgroup.RSGroupBasedLoadBalancer.generateGroupMaps(RSGroupBasedLoadBalancer.java:254)
 at 
org.apache.hadoop.hbase.rsgroup.RSGroupBasedLoadBalancer.roundRobinAssignment(RSGroupBasedLoadBalancer.java:162)
 at 
org.apache.hadoop.hbase.master.assignment.AssignmentManager.createRoundRobinAssignProcedures(AssignmentManager.java:603)
 at 
org.apache.hadoop.hbase.master.procedure.CreateTableProcedure.executeFromState(CreateTableProcedure.java:108)
 at 
org.apache.hadoop.hbase.master.procedure.CreateTableProcedure.executeFromState(CreateTableProcedure.java:51)
 at 
org.apache.hadoop.hbase.procedure2.StateMachineProcedure.execute(StateMachineProcedure.java:182)
 at org.apache.hadoop.hbase.procedure2.Procedure.doExecute(Procedure.java:845)
 at 
org.apache.hadoop.hbase.procedure2.ProcedureExecutor.execProcedure(ProcedureExecutor.java:1458)
 at 
org.apache.hadoop.hbase.procedure2.ProcedureExecutor.executeProcedure(ProcedureExecutor.java:1227)
 at 
org.apache.hadoop.hbase.procedure2.ProcedureExecutor.access$800(ProcedureExecutor.java:78)
 at 
org.apache.hadoop.hbase.procedure2.ProcedureExecutor$WorkerThread.run(ProcedureExecutor.java:1738)

 

As a result of CreateTableProcedure.rollbackState, it may then print logs 
warning TableExistsException as follows,

2018-02-02,16:12:55,503 WARN 
org.apache.hadoop.hbase.rsgroup.RSGroupInfoManagerImpl$RSGroupStartupWorker: 
Failed to perform check
java.io.IOException: Failed to create group table. 
org.apache.hadoop.hbase.TableExistsException: hbase:rsgroup
 at 
org.apache.hadoop.hbase.rsgroup.RSGroupInfoManagerImpl$RSGroupStartupWorker.createRSGroupTable(RSGroupInfoManagerImpl.java:877)

 

After some auto-retries, it loops running the thread RSGroupStartupWorker, will 
print logs as follows, 

2018-02-02,16:23:17,626 INFO 
org.apache.hadoop.hbase.rsgroup.RSGroupInfoManagerImpl$RSGroupStartupWorker: 
RSGroup table=hbase:rsgroup isOnline=true, regionCount=0, assignCount=0, 
rootMetaFound=true
2018-02-02,16:23:17,730 INFO 
org.apache.hadoop.hbase.rsgroup.RSGroupInfoManagerImpl$RSGroupStartupWorker: 
RSGroup table=hbase:rsgroup isOnline=true, regionCount=0, assignCount=0, 
rootMetaFound=true
2018-02-02,16:23:17,834 INFO 
org.apache.hadoop.hbase.rsgroup.RSGroupInfoManagerImpl$RSGroupStartupWorker: 
RSGroup table=hbase:rsgroup isOnline=true, regionCount=0, assignCount=0, 
rootMetaFound=true
2018-02-02,16:23:17,937 INFO 
org.apache.hadoop.hbase.rsgroup.RSGroupInfoManagerImpl$RSGroupStartupWorker: 
RSGroup table=hbase:rsgroup isOnline=true, regionCount=0, assignCount=0, 
rootMetaFound=true

 

And using shells of rsgroup, it will tips that currently is in "offline mode".

 

The reason of this problem is that CreateTableProcedure used 
RSGroupBasedLoadBalancer, who has member variables initialized depending on 
return of CreateTableProcedure. 

 



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

Reply via email to