diff --git hbase-server/src/main/java/org/apache/hadoop/hbase/client/HConnectionManager.java hbase-server/src/main/java/org/apache/hadoop/hbase/client/HConnectionManager.java index ab2ab19..e5a3256 100644 --- hbase-server/src/main/java/org/apache/hadoop/hbase/client/HConnectionManager.java +++ hbase-server/src/main/java/org/apache/hadoop/hbase/client/HConnectionManager.java @@ -915,6 +915,14 @@ public class HConnectionManager { public HRegionLocation relocateRegion(final byte [] tableName, final byte [] row) throws IOException{ + + // Since this is an explicit request not to use any caching, finding + // disabled tables should not be desirable. This will ensure that an exception is thrown when + // the first time a disabled table is interacted with. + if (isTableDisabled(tableName)) { + throw new DoNotRetryIOException(Bytes.toString(tableName) + " is disabled."); + } + return locateRegion(tableName, row, false, true); } diff --git hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestAdmin.java hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestAdmin.java index 0fa5ae8..5871151 100644 --- hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestAdmin.java +++ hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestAdmin.java @@ -240,9 +240,7 @@ public class TestAdmin { boolean ok = false; try { ht.get(get); - } catch (NotServingRegionException e) { - ok = true; - } catch (RetriesExhaustedException e) { + } catch (DoNotRetryIOException e) { ok = true; } assertTrue(ok); @@ -288,23 +286,22 @@ public class TestAdmin { try { ht1.get(get); ht2.get(get); - } catch (NotServingRegionException e) { - ok = true; - } catch (RetriesExhaustedException e) { + } catch (DoNotRetryIOException e) { ok = true; } + assertTrue(ok); this.admin.enableTables("testDisableAndEnableTable.*"); // Test that tables are enabled try { ht1.get(get); - } catch (RetriesExhaustedException e) { + } catch (IOException e) { ok = false; } try { ht2.get(get); - } catch (RetriesExhaustedException e) { + } catch (IOException e) { ok = false; } assertTrue(ok); @@ -1014,9 +1011,10 @@ public class TestAdmin { this.admin.disableTable(tableName); try { new HTable(TEST_UTIL.getConfiguration(), tableName); - } catch (org.apache.hadoop.hbase.client.RegionOfflineException e) { - // Expected + } catch (DoNotRetryIOException e) { + //expected } + this.admin.addColumn(tableName, new HColumnDescriptor("col2")); this.admin.enableTable(tableName); try {