[
https://issues.apache.org/jira/browse/HBASE-7600?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13793308#comment-13793308
]
Liu Shaohui commented on HBASE-7600:
------------------------------------
reproduce this issue in our ci env. The key problem that two create table
threads may both success in hmaster.
parallel create table threads are serialized in
ZKTable:checkAndSetEnablingTable, but the ZKTable:checkAndSetEnablingTable only
check the enabling status, not check other states.
if:
t1: If two threads start to create same name table
t2: two master threads start to create CreateTableHandler objects
t3: two master threads pass the MetaReader.tableExists check in creation of
CreateTableHandler
t4: thread 1 pass this.assignmentManager.getZKTable().checkAndSetEnablingTable,
for there is no table status in master, and set table status to enabling
t5: other thread process the CreateTableHandler created by thread 1, and finish
create table, and set table status to enabled.
t6: thread 2 pass this.assignmentManager.getZKTable().checkAndSetEnablingTable
for the table status is enabled.
t7: other thread process the CreateTableHandler created by thread 2, and start
create table.
Two threads both create table success in master.
> Investigate TestAdmin.testCreateBadTables
> -----------------------------------------
>
> Key: HBASE-7600
> URL: https://issues.apache.org/jira/browse/HBASE-7600
> Project: HBase
> Issue Type: Bug
> Affects Versions: 0.94.4
> Reporter: Lars Hofhansl
> Attachments: HBASE-7600-0.94-v1.patch
>
>
> See in a 0.94 test run.
> Looks like in some cases it is possible to create two tables with the same
> name, which is worrisome.
> {code}
> java.lang.AssertionError: expected:<1> but was:<2>
> at org.junit.Assert.fail(Assert.java:93)
> at org.junit.Assert.failNotEquals(Assert.java:647)
> at org.junit.Assert.assertEquals(Assert.java:128)
> at org.junit.Assert.assertEquals(Assert.java:472)
> at org.junit.Assert.assertEquals(Assert.java:456)
> at
> org.apache.hadoop.hbase.client.TestAdmin.testCreateBadTables(TestAdmin.java:1091)
> {code}
--
This message was sent by Atlassian JIRA
(v6.1#6144)