diff --git src/main/java/org/apache/hadoop/hbase/client/HConnectionManager.java src/main/java/org/apache/hadoop/hbase/client/HConnectionManager.java index 4a68b43..4edcc1c 100644 --- src/main/java/org/apache/hadoop/hbase/client/HConnectionManager.java +++ src/main/java/org/apache/hadoop/hbase/client/HConnectionManager.java @@ -786,6 +786,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); } diff --git src/test/java/org/apache/hadoop/hbase/client/TestAdmin.java src/test/java/org/apache/hadoop/hbase/client/TestAdmin.java index 02b483a..7cb303e 100644 --- src/test/java/org/apache/hadoop/hbase/client/TestAdmin.java +++ src/test/java/org/apache/hadoop/hbase/client/TestAdmin.java @@ -245,9 +245,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); @@ -290,23 +288,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); @@ -920,9 +917,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 {