[ 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)