guluo created HBASE-28481:
-----------------------------

             Summary: Prompting table already exists after failing to create 
table with many region replications
                 Key: HBASE-28481
                 URL: https://issues.apache.org/jira/browse/HBASE-28481
             Project: HBase
          Issue Type: Bug
    Affects Versions: 2.4.13
         Environment: Centos
            Reporter: guluo


Reproduction steps:
{code:java}
# Create table with 65537 region replications 
# we would get errors as follow,  this step is no problem 
hbase:005:0> create 't01', 'info', {REGION_REPLICATION => 65537} 
ERROR: java.lang.IllegalArgumentException: ReplicaId cannot be greater 
than65535 
For usage try 'help "create"' 
Took 0.7590 seconds{code}


{code:java}
# list, and found the table does not exist, as follow 
hbase:006:0> list TABLE 
0 row(s) Took 0.0100 seconds 
=> []{code}


{code:java}
# we create this tale agin by the correct way 
# we would get message that this table already exists 
hbase:007:0> create 't01', 'info' 
ERROR: Table already exists: t01! 
For usage try 'help "create"' 
Took 0.1210 seconds {code}
 
Reason:
In the CreateTableProcedure, we update this table descriptor into HBase cluster 
at stage  CREATE_TABLE_WRITE_FS_LAYOUT
 
{code:java}
env.getMasterServices().getTableDescriptors().update(tableDescriptor, true); 
{code}
 
and then, we check if the Region Replication Count is legal at stage 
CREATE_TABLE_ADD_TO_META.
 
 
{code:java}
newRegions = addTableToMeta(env, tableDescriptor, newRegions);

// MutableRegionInfo.checkReplicaId 
private static int checkReplicaId(int regionId) {     
  if (regionId > MAX_REPLICA_ID) {         
    throw new IllegalArgumentException("ReplicaId cannot be greater than" + 
     MAX_REPLICA_ID);    
   }     
return regionId;
}{code}
 
 
So, we can not create the same name table by correct way after faling to create 
table with many region replications (exceed 65536), because the table 
descriptor has been updated into cluster and there is no rollback.

So i think we can check if the region replication count at stage 
CREATE_TABLE_PRE_OPERATION to avoid this problem



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to