[ 
https://issues.apache.org/jira/browse/HBASE-12707?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Ted Yu resolved HBASE-12707.
----------------------------
    Resolution: Cannot Reproduce

> TestMasterObserver#testTableOperations may fail due to race condition
> ---------------------------------------------------------------------
>
>                 Key: HBASE-12707
>                 URL: https://issues.apache.org/jira/browse/HBASE-12707
>             Project: HBase
>          Issue Type: Test
>            Reporter: Ted Yu
>            Priority: Minor
>
> Here was the failure I saw:
> {code}
> testTableOperations(org.apache.hadoop.hbase.coprocessor.TestMasterObserver)  
> Time elapsed: 5.153 sec  <<< FAILURE!
> java.lang.AssertionError: Delete table handler should be called.
>         at org.junit.Assert.fail(Assert.java:88)
>         at org.junit.Assert.assertTrue(Assert.java:41)
>         at 
> org.apache.hadoop.hbase.coprocessor.TestMasterObserver.testTableOperations(TestMasterObserver.java:1302)
> {code}
> Here is relevant part of test output:
> {code}
> 2014-12-18 00:18:47,788 DEBUG [MASTER_TABLE_OPERATIONS-kiyo:56800-0] 
> backup.HFileArchiver(438): Finished archiving from class 
> org.apache.hadoop.hbase.backup.HFileArchiver$FileablePath, 
> file:hdfs://localhost:49506/user/hortonzy/test-data/caaed63b-db6f-4dad-a455-3f63897555f7/.tmp/data/default/observed_table/294700c0c28e634c9e046d5368559666/recovered.edits/7.seqid,
>  to 
> hdfs://localhost:49506/user/hortonzy/test-data/caaed63b-db6f-4dad-a455-3f63897555f7/archive/data/default/observed_table/294700c0c28e634c9e046d5368559666/recovered.edits/7.seqid
> 2014-12-18 00:18:47,789 INFO  [IPC Server handler 2 on 49506] 
> blockmanagement.BlockManager(1074): BLOCK* addToInvalidates: 
> blk_1073741879_1055 127.0.0.1:60154 127.0.0.1:38435
> 2014-12-18 00:18:47,789 DEBUG [MASTER_TABLE_OPERATIONS-kiyo:56800-0] 
> backup.HFileArchiver(453): Deleted all region files in: 
> hdfs://localhost:49506/user/hortonzy/test-data/caaed63b-db6f-4dad-a455-3f63897555f7/.tmp/data/default/observed_table/294700c0c28e634c9e046d5368559666
> 2014-12-18 00:18:47,790 INFO  [IPC Server handler 0 on 49506] 
> blockmanagement.BlockManager(1074): BLOCK* addToInvalidates: 
> blk_1073741883_1059 127.0.0.1:60154 127.0.0.1:38435
> 2014-12-18 00:18:47,791 DEBUG [MASTER_TABLE_OPERATIONS-kiyo:56800-0] 
> handler.DeleteTableHandler(160): Table 'observed_table' archived!
> 2014-12-18 00:18:47,791 DEBUG [MASTER_TABLE_OPERATIONS-kiyo:56800-0] 
> handler.DeleteTableHandler(110): Removing 'observed_table' descriptor.
> 2014-12-18 00:18:47,792 DEBUG [MASTER_TABLE_OPERATIONS-kiyo:56800-0] 
> handler.DeleteTableHandler(116): Removing 'observed_table' from region states.
> 2014-12-18 00:18:47,792 DEBUG [MASTER_TABLE_OPERATIONS-kiyo:56800-0] 
> handler.DeleteTableHandler(120): Marking 'observed_table' as deleted.
> 2014-12-18 00:18:47,874 DEBUG 
> [B.defaultRpcServer.handler=2,queue=0,port=56800] 
> util.FSTableDescriptors(177): Exception during readTableDecriptor. Current 
> table name = observed_table
> org.apache.hadoop.hbase.TableInfoMissingException: No table descriptor file 
> under 
> hdfs://localhost:49506/user/hortonzy/test-data/caaed63b-db6f-4dad-a455-3f63897555f7/data/default/observed_table
>         at 
> org.apache.hadoop.hbase.util.FSTableDescriptors.getTableDescriptorFromFs(FSTableDescriptors.java:509)
>         at 
> org.apache.hadoop.hbase.util.FSTableDescriptors.getTableDescriptorFromFs(FSTableDescriptors.java:487)
>         at 
> org.apache.hadoop.hbase.util.FSTableDescriptors.get(FSTableDescriptors.java:172)
>         at 
> org.apache.hadoop.hbase.master.HMaster.listTableDescriptors(HMaster.java:2166)
>         at 
> org.apache.hadoop.hbase.master.MasterRpcServices.getTableDescriptors(MasterRpcServices.java:788)
>         at 
> org.apache.hadoop.hbase.protobuf.generated.MasterProtos$MasterService$2.callBlockingMethod(MasterProtos.java:42402)
>         at org.apache.hadoop.hbase.ipc.RpcServer.call(RpcServer.java:2028)
>         at org.apache.hadoop.hbase.ipc.CallRunner.run(CallRunner.java:108)
>         at 
> org.apache.hadoop.hbase.ipc.RpcExecutor.consumerLoop(RpcExecutor.java:112)
>         at org.apache.hadoop.hbase.ipc.RpcExecutor$1.run(RpcExecutor.java:92)
>         at java.lang.Thread.run(Thread.java:724)
> 2014-12-18 00:18:47,875 INFO  [main] client.HBaseAdmin(738): Deleted 
> observed_table
> 2014-12-18 00:18:47,880 WARN  [main] hbase.MetaTableAccessor$1(344): No 
> serialized HRegionInfo in 
> keyvalues={observed_table,,1418861912253.8551edbe4ffb771a607ad362bfc6642d./info:seqnumDuringOpen/1418861917732/Put/vlen=8/seqid=0,
>  
> observed_table,,1418861912253.8551edbe4ffb771a607ad362bfc6642d./info:server/1418861917732/Put/vlen=28/seqid=0,
>  
> observed_table,,1418861912253.8551edbe4ffb771a607ad362bfc6642d./info:serverstartcode/1418861917732/Put/vlen=8/seqid=0}
> 2014-12-18 00:18:47,924 INFO  [main] hbase.ResourceChecker(171): after: 
> coprocessor.TestMasterObserver#testTableOperations Thread=600 (was 475)
> {code}
> Here is related code in DeleteTableHandler#handleTableOperation():
> {code}
>     removeTableData(regions);
>     if (cpHost != null) {
>       cpHost.postDeleteTableHandler(this.tableName);
> {code}
> Table data is removed first, then postDeleteTableHandler is called.
> However, the loop in HBaseAdmin checks for the presence of TableDescriptor. 
> The loop exits if TableDescriptor is not found. Hence the assertion in test 
> may be executed earlier than postDeleteTableHandler is called, leading to 
> test failure.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to