You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@hbase.apache.org by "Andrew Purtell (JIRA)" <ji...@apache.org> on 2015/04/11 02:55:12 UTC

[jira] [Resolved] (HBASE-4750) Make thrift2 ThriftHBaseServiceHandler more friendly to concurrent tests

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

Andrew Purtell resolved HBASE-4750.
-----------------------------------
    Resolution: Incomplete

> Make thrift2 ThriftHBaseServiceHandler more friendly to concurrent tests
> ------------------------------------------------------------------------
>
>                 Key: HBASE-4750
>                 URL: https://issues.apache.org/jira/browse/HBASE-4750
>             Project: HBase
>          Issue Type: Task
>            Reporter: Ted Yu
>
> Quite often we saw the following reported by HadoopQA:
> {code}
> testExists(org.apache.hadoop.hbase.thrift2.TestThriftHBaseServiceHandler)  Time elapsed: 0.062 sec  <<< ERROR!
> java.lang.IllegalArgumentException: Check the value configured in 'zookeeper.znode.parent'. There could be a mismatch with the one configured in the master.
>   at org.apache.hadoop.hbase.zookeeper.RootRegionTracker.waitRootRegionLocation(RootRegionTracker.java:81)
>   at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:753)
>   at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:733)
>   at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:866)
>   at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:765)
>   at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:733)
>   at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:866)
>   at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:769)
>   at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:733)
>   at org.apache.hadoop.hbase.client.HTable.<init>(HTable.java:202)
>   at org.apache.hadoop.hbase.client.HTableFactory.createHTableInterface(HTableFactory.java:36)
>   at org.apache.hadoop.hbase.client.HTablePool.createHTable(HTablePool.java:268)
>   at org.apache.hadoop.hbase.client.HTablePool.findOrCreateTable(HTablePool.java:198)
>   at org.apache.hadoop.hbase.client.HTablePool.getTable(HTablePool.java:173)
>   at org.apache.hadoop.hbase.client.HTablePool.getTable(HTablePool.java:216)
>   at org.apache.hadoop.hbase.thrift2.ThriftHBaseServiceHandler.getTable(ThriftHBaseServiceHandler.java:64)
>   at org.apache.hadoop.hbase.thrift2.ThriftHBaseServiceHandler.exists(ThriftHBaseServiceHandler.java:115)
>   at org.apache.hadoop.hbase.thrift2.TestThriftHBaseServiceHandler.testExists(TestThriftHBaseServiceHandler.java:123)
> {code}
> Methods in ThriftHBaseServiceHandler don't accept Configuration parameter. This makes parallelizing tests harder.
> Looking deeper, we can see that HTablePool methods such as getTable() and findOrCreateTable() don't accept Configuration parameter either.
> So we have to pass Configuration object to HTablePool ctor.
> This means we need to add ThriftHBaseServiceHandler ctor which takes Configuration parameter.
> Instead of the following in TestThriftHBaseServiceHandler:
> {code}
>     ThriftHBaseServiceHandler handler = new ThriftHBaseServiceHandler();
> {code}
> We should be using the new ThriftHBaseServiceHandler ctor and pass HBaseTestingUtility's Configuration so that HTablePool ctor can receive it.



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