hbase-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Izaak Rubin (JIRA)" <j...@apache.org>
Subject [jira] Updated: (HBASE-739) HBaseAdmin.createTable() using old HTableDescription doesn't work
Date Fri, 11 Jul 2008 22:14:31 GMT

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

Izaak Rubin updated HBASE-739:
------------------------------

    Attachment: hbase-739.patch

I've investigated this issue and have several things to report.  Sebastien, I wasn't able
to replicate the exact error you gave in the issue description.  I did, however, get an error
under the same circumstances (for testTruncateInBranch_0_1, although my error was a SocketTimeoutException).
 Also, I should point out that the testing code you posted doesn't disable the table before
dropping it, which causes other problems.

The issue, or at least the one that I experienced with SocketTimeoutException, was that UnmodifyableHTableDescriptor
did not serialize.  The server could not see the UnmodifyableHTableDescriptor class because
it was package-protected and resides in hbase.client.  The solution, and the attached patch,
merely involves adding the word "public" to the UnmodifyableHTableDescriptor class declaration.
 The server can now see the class and serialize it.  

> HBaseAdmin.createTable() using old HTableDescription doesn't work
> -----------------------------------------------------------------
>
>                 Key: HBASE-739
>                 URL: https://issues.apache.org/jira/browse/HBASE-739
>             Project: Hadoop HBase
>          Issue Type: Bug
>          Components: client
>    Affects Versions: 0.2.0
>            Reporter: Sebastien Rainville
>            Assignee: Izaak Rubin
>            Priority: Minor
>         Attachments: hbase-739.patch
>
>
> The following test case (see below) illustrate what used to work in branch 0.1 and that
doesn't anymore. testTruncateInTrunk() shows how I got it to work again. I get this error
now when trying the old code but using trunk:
> java.lang.reflect.InvocationTargetException
> 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> 	at java.lang.reflect.Method.invoke(Method.java:597)
> 	at com.openplaces.test.fixture.FixtureLoader.truncateHbaseTable(FixtureLoader.java:105)
> 	at com.openplaces.test.fixture.FixtureLoader.loadHbaseFixtures(FixtureLoader.java:63)
> 	at com.openplaces.test.fixture.TestCaseWithFixtures.hbaseFixtures(TestCaseWithFixtures.java:34)
> 	at com.openplaces.test.isolated.TestSearchSRFIEF.setUp(TestSearchSRFIEF.java:37)
> 	at junit.framework.TestCase.runBare(TestCase.java:125)
> 	at junit.framework.TestResult$1.protect(TestResult.java:106)
> 	at junit.framework.TestResult.runProtected(TestResult.java:124)
> 	at junit.framework.TestResult.run(TestResult.java:109)
> 	at junit.framework.TestCase.run(TestCase.java:118)
> 	at junit.framework.TestSuite.runTest(TestSuite.java:208)
> 	at junit.framework.TestSuite.run(TestSuite.java:203)
> 	at org.eclipse.jdt.internal.junit.runner.junit3.JUnit3TestReference.run(JUnit3TestReference.java:130)
> 	at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
> 	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:460)
> 	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:673)
> 	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:386)
> 	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196)
> Caused by: java.net.SocketTimeoutException: timed out waiting for rpc response
> 	at org.apache.hadoop.ipc.Client.call(Client.java:559)
> 	at org.apache.hadoop.hbase.ipc.HbaseRPC$Invoker.invoke(HbaseRPC.java:211)
> 	at $Proxy5.createTable(Unknown Source)
> 	at org.apache.hadoop.hbase.client.HBaseAdmin.createTableAsync(HBaseAdmin.java:184)
> 	at org.apache.hadoop.hbase.client.HBaseAdmin.createTable(HBaseAdmin.java:144)
> 	at com.openplaces.util.hbaserecord.connectionadapters.HbaseAdapter.truncateTable(HbaseAdapter.java:502)
> 	at com.openplaces.util.hbaserecord.Base$Singleton.truncate(Base.java:609)
> 	... 21 more
> import java.io.IOException;
> import java.util.Collection;
> import org.apache.hadoop.hbase.HBaseConfiguration;
> import org.apache.hadoop.hbase.HColumnDescriptor;
> import org.apache.hadoop.hbase.HTableDescriptor;
> import org.apache.hadoop.hbase.client.HBaseAdmin;
> import org.apache.hadoop.hbase.client.HTable;
> import junit.framework.TestCase;
> @SuppressWarnings("deprecation")
> public class TestTruncate extends TestCase {
> 	public void testTruncateInBranch_0_1() throws IOException{
> 		HTable table = new HTable("mytable");
> 		HBaseAdmin admin = new HBaseAdmin(new HBaseConfiguration());
> 		HTableDescriptor tableDesc = table.getMetadata();
> 		admin.deleteTable(table.getTableName());
> 		admin.createTable(tableDesc);
> 	}
> 	public void testTruncateInTrunk() throws IOException{
> 		HTable table = new HTable("mytable");
> 		HBaseAdmin admin = new HBaseAdmin(new HBaseConfiguration());
> 		Collection<HColumnDescriptor> families = table.getMetadata().getFamilies();
> 		
> 		HTableDescriptor tableDesc = new HTableDescriptor(table.getTableName());
> 		for(HColumnDescriptor family : families){
> 			tableDesc.addFamily(family);
> 		}
> 		admin.deleteTable(table.getTableName());
> 		admin.createTable(tableDesc);
> 	}
> }

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


Mime
View raw message