[
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_v2.patch
I think I've really fixed it this time. I added a default constructor to
UnmodifyableHTableDescriptor, which I should have done in the last patch (this
all goes in the same vein of making UnmodifyableHTableDescriptor serializable).
I found that Eclipse really confused the testing process - I had definitely run
the test with and without the default constructor, sometimes succeeding and
sometimes failing. Running the test on the command-line was much more useful
and straightforward, and I'd recommend doing that instead (at least for this
test). Here's how you can run just that test on the command-line:
Add the following to your build.xml:
{code}
<target name="ensure-test-name" unless="test">
<fail message="You must run this target with -Dtest=TestName"/>
</target>
<target name="runtest" description="Runs the test you specify on the command
line with -Dtest=" depends="compile, ensure-test-name">
<junit printsummary="withOutAndErr" fork="yes">
<classpath refid="test.classpath" />
<formatter type="plain" usefile="false"/>
<batchtest>
<fileset dir="${src.test}">
<include name="**/${test}.java"/>
</fileset>
</batchtest>
</junit>
</target>
{code}
Start HBase, make sure TestHbase739.java is added, "mytable" exists, etc, and
then enter:
{code}
ant clean jar compile-test runtest -Dtest=TestHbase739
{code}
Without the attached patch, hbase-739_v2.patch, this should fail (it might say
"Build Successful", but check the actual junit output). After adding the
attached patch, this should succeed (at least it did for me, when doing this
process on a fresh copy of HBase).
Let me know if this is still generating errors.
> 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, hbase-739_v2.patch, master.log,
> TEST-org.apache.hadoop.hbase.TestTruncateIsaak.txt, TestHbase739.java,
> TestTruncate2.java
>
>
> 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.