Index: src/main/java/org/apache/hadoop/hbase/client/HBaseAdmin.java =================================================================== --- src/main/java/org/apache/hadoop/hbase/client/HBaseAdmin.java (revision 1030751) +++ src/main/java/org/apache/hadoop/hbase/client/HBaseAdmin.java (working copy) @@ -737,11 +737,21 @@ HServerAddress hsa = new HServerAddress(hostAndPort); Pair pair = MetaReader.getRegion(ct, regionname); - closeRegion(hsa, pair.getFirst()); + if (pair == null || pair.getSecond() == null) { + LOG.info("No server in .META. for " + + Bytes.toString(regionname) + "; pair=" + pair); + } else { + closeRegion(hsa, pair.getFirst()); + } } else { Pair pair = MetaReader.getRegion(ct, regionname); - closeRegion(pair.getSecond(), pair.getFirst()); + if (pair == null || pair.getSecond() == null) { + LOG.info("No server in .META. for " + + Bytes.toString(regionname) + "; pair=" + pair); + } else { + closeRegion(pair.getSecond(), pair.getFirst()); + } } } finally { cleanupCatalogTracker(ct); @@ -783,12 +793,18 @@ if (isRegionName) { Pair pair = MetaReader.getRegion(getCatalogTracker(), tableNameOrRegionName); - flush(pair.getSecond(), pair.getFirst()); + if (pair == null || pair.getSecond() == null) { + LOG.info("No server in .META. for " + + Bytes.toString(tableNameOrRegionName) + "; pair=" + pair); + } else { + flush(pair.getSecond(), pair.getFirst()); + } } else { List> pairs = MetaReader.getTableRegionsAndLocations(getCatalogTracker(), Bytes.toString(tableNameOrRegionName)); for (Pair pair: pairs) { + if (pair.getSecond() == null) continue; flush(pair.getSecond(), pair.getFirst()); } } @@ -871,12 +887,18 @@ if (isRegionName(tableNameOrRegionName)) { Pair pair = MetaReader.getRegion(ct, tableNameOrRegionName); - compact(pair.getSecond(), pair.getFirst(), major); + if (pair == null || pair.getSecond() == null) { + LOG.info("No server in .META. for " + + Bytes.toString(tableNameOrRegionName) + "; pair=" + pair); + } else { + compact(pair.getSecond(), pair.getFirst(), major); + } } else { List> pairs = MetaReader.getTableRegionsAndLocations(ct, Bytes.toString(tableNameOrRegionName)); for (Pair pair: pairs) { + if (pair.getSecond() == null) continue; compact(pair.getSecond(), pair.getFirst(), major); } } @@ -956,12 +978,19 @@ // Its a possible region name. Pair pair = MetaReader.getRegion(getCatalogTracker(), tableNameOrRegionName); - split(pair.getSecond(), pair.getFirst()); + if (pair == null || pair.getSecond() == null) { + LOG.info("No server in .META. for " + + Bytes.toString(tableNameOrRegionName) + "; pair=" + pair); + } else { + split(pair.getSecond(), pair.getFirst()); + } } else { List> pairs = MetaReader.getTableRegionsAndLocations(getCatalogTracker(), Bytes.toString(tableNameOrRegionName)); for (Pair pair: pairs) { + // May not be a server for a particular row + if (pair.getSecond() == null) continue; split(pair.getSecond(), pair.getFirst()); } }