You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@hbase.apache.org by "Hudson (Jira)" <ji...@apache.org> on 2024/04/08 04:29:00 UTC
[jira] [Commented] (HBASE-28481) Prompting table already exists after failing to create table with many region replications
[ https://issues.apache.org/jira/browse/HBASE-28481?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17834771#comment-17834771 ]
Hudson commented on HBASE-28481:
--------------------------------
Results for branch branch-2.4
[build #716 on builds.a.o|https://ci-hbase.apache.org/job/HBase%20Nightly/job/branch-2.4/716/]: (/) *{color:green}+1 overall{color}*
----
details (if available):
(/) {color:green}+1 general checks{color}
-- For more information [see general report|https://ci-hbase.apache.org/job/HBase%20Nightly/job/branch-2.4/716/General_20Nightly_20Build_20Report/]
(/) {color:green}+1 jdk8 hadoop2 checks{color}
-- For more information [see jdk8 (hadoop2) report|https://ci-hbase.apache.org/job/HBase%20Nightly/job/branch-2.4/716/JDK8_20Nightly_20Build_20Report_20_28Hadoop2_29/]
(/) {color:green}+1 jdk8 hadoop3 checks{color}
-- For more information [see jdk8 (hadoop3) report|https://ci-hbase.apache.org/job/HBase%20Nightly/job/branch-2.4/716/JDK8_20Nightly_20Build_20Report_20_28Hadoop3_29/]
(/) {color:green}+1 jdk11 hadoop3 checks{color}
-- For more information [see jdk11 report|https://ci-hbase.apache.org/job/HBase%20Nightly/job/branch-2.4/716/JDK11_20Nightly_20Build_20Report_20_28Hadoop3_29/]
(/) {color:green}+1 source release artifact{color}
-- See build output for details.
(/) {color:green}+1 client integration test{color}
> 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
> Assignee: guluo
> Priority: Major
> Labels: pull-request-available
> Fix For: 2.6.0, 2.4.18, 3.0.0-beta-2, 2.5.9
>
>
> 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)