[
https://issues.apache.org/jira/browse/HADOOP-2579?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Peter Dolan updated HADOOP-2579:
--------------------------------
Description:
When a table has been created, initializing a new HTable object for that table
works properly, as expected, but initializing a new HTable against a
nonexistent table in the same context (a table exists), a
NoServerForRegionException is thrown instead of TableNotFoundException, as
would be expected.
If there haven't been any tables created, initializing a new HTable object
against 'nosuchTable' throws TableNotFoundException, as expected.
Running the following TestCase exposes the issue on my machine.
{code:title=TestHTable.java|borderStyle=solid}
package org.apache.hadoop.hbase;
import java.io.IOException;
import org.apache.hadoop.io.Text;
/**
* Tests HTable
*/
public class TestHTable extends HBaseClusterTestCase implements HConstants {
public void testTableNotFoundExceptionWithoutAnyTables() {
try {
new HTable(conf, new Text("notATable"));
fail("Should have thrown a TableNotFoundException");
} catch (TableNotFoundException e) {
// expected
} catch (IOException e) {
e.printStackTrace();
fail("Should have thrown a TableNotFoundException instead of a " +
e.getClass());
}
}
public void testTableNotFoundExceptionWithATable() {
try {
HColumnDescriptor column =
new HColumnDescriptor(COLUMN_FAMILY.toString());
HBaseAdmin admin = new HBaseAdmin(conf);
HTableDescriptor testTableADesc =
new HTableDescriptor("table");
testTableADesc.addFamily(column);
admin.createTable(testTableADesc);
// This should throw a TableNotFoundException, it has not been created
new HTable(conf, new Text("notATable"));
fail("Should have thrown a TableNotFoundException");
} catch (TableNotFoundException e) {
// expected
} catch (IOException e) {
e.printStackTrace();
fail("Should have thrown a TableNotFoundException instead of a " +
e.getClass());
}
}
}
{code}
was:
When a table has been created, initializing a new HTable object for that table
works properly, as expected, but initializing a new HTable against a
nonexistent table in the same context (a table exists), a
NoServerForRegionException is thrown instead of TableNotFoundException, as
would be expected.
If there haven't been any tables created, initializing a new HTable object
against 'nosuchTable' throws TableNotFoundException, as expected.
Running the following TestCase exposes the issue on my machine.
{code:title=TestHTable.java|borderStyle=solid}
package org.apache.hadoop.hbase;
import java.io.IOException;
import org.apache.hadoop.io.Text;
/**
* Tests HTable
*/
public class TestHTable extends HBaseClusterTestCase implements HConstants {
public void testTableNotFoundExceptionWithoutAnyTables() {
try {
new HTable(conf, new Text("notATable"));
} catch (TableNotFoundException e) {
// expected
} catch (IOException e) {
e.printStackTrace();
fail("Should have thrown a TableNotFoundException instead of a " +
e.getClass());
}
}
public void testTableNotFoundExceptionWithATable() {
try {
HColumnDescriptor column =
new HColumnDescriptor(COLUMN_FAMILY.toString());
HBaseAdmin admin = new HBaseAdmin(conf);
HTableDescriptor testTableADesc =
new HTableDescriptor("table");
testTableADesc.addFamily(column);
admin.createTable(testTableADesc);
// This should throw a TableNotFoundException, it has not been created
new HTable(conf, new Text("notATable"));
fail("Should have thrown a TableNotFoundException");
} catch (TableNotFoundException e) {
// expected
} catch (IOException e) {
e.printStackTrace();
fail("Should have thrown a TableNotFoundException instead of a " +
e.getClass());
}
}
}
{code}
(adding a missing fail line)
> initializing a new HTable object against a nonexistent table throws a
> NoServerForRegionException instead of a TableNotFoundException when a
> different table has been created previously
> ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
>
> Key: HADOOP-2579
> URL: https://issues.apache.org/jira/browse/HADOOP-2579
> Project: Hadoop
> Issue Type: Bug
> Components: contrib/hbase
> Reporter: Peter Dolan
>
> When a table has been created, initializing a new HTable object for that
> table works properly, as expected, but initializing a new HTable against a
> nonexistent table in the same context (a table exists), a
> NoServerForRegionException is thrown instead of TableNotFoundException, as
> would be expected.
> If there haven't been any tables created, initializing a new HTable object
> against 'nosuchTable' throws TableNotFoundException, as expected.
> Running the following TestCase exposes the issue on my machine.
> {code:title=TestHTable.java|borderStyle=solid}
> package org.apache.hadoop.hbase;
> import java.io.IOException;
> import org.apache.hadoop.io.Text;
> /**
> * Tests HTable
> */
> public class TestHTable extends HBaseClusterTestCase implements HConstants {
> public void testTableNotFoundExceptionWithoutAnyTables() {
> try {
> new HTable(conf, new Text("notATable"));
> fail("Should have thrown a TableNotFoundException");
> } catch (TableNotFoundException e) {
> // expected
> } catch (IOException e) {
> e.printStackTrace();
> fail("Should have thrown a TableNotFoundException instead of a " +
> e.getClass());
> }
> }
>
> public void testTableNotFoundExceptionWithATable() {
> try {
> HColumnDescriptor column =
> new HColumnDescriptor(COLUMN_FAMILY.toString());
> HBaseAdmin admin = new HBaseAdmin(conf);
> HTableDescriptor testTableADesc =
> new HTableDescriptor("table");
> testTableADesc.addFamily(column);
> admin.createTable(testTableADesc);
> // This should throw a TableNotFoundException, it has not been created
> new HTable(conf, new Text("notATable"));
>
> fail("Should have thrown a TableNotFoundException");
> } catch (TableNotFoundException e) {
> // expected
> } catch (IOException e) {
> e.printStackTrace();
> fail("Should have thrown a TableNotFoundException instead of a " +
> e.getClass());
> }
> }
> }
> {code}
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.