diff --git a/src/main/java/org/apache/hadoop/hbase/HRegionInfo.java b/src/main/java/org/apache/hadoop/hbase/HRegionInfo.java index 3f381565432..ad16c18b257 100644 --- a/src/main/java/org/apache/hadoop/hbase/HRegionInfo.java +++ b/src/main/java/org/apache/hadoop/hbase/HRegionInfo.java @@ -777,8 +777,14 @@ implements WritableComparable { result = Bytes.compareTo(this.endKey, o.endKey); if (result != 0) { - if (this.getEndKey().length == 0) return 1; // this is last region - if (o.getEndKey().length == 0) return -1; // o is the last region + if (this.getStartKey().length != 0 + && this.getEndKey().length == 0) { + return 1; // this is last region + } + if (o.getStartKey().length != 0 + && o.getEndKey().length == 0) { + return -1; // o is the last region + } return result; } if (this.offLine == o.offLine) diff --git a/src/main/java/org/apache/hadoop/hbase/master/CatalogJanitor.java b/src/main/java/org/apache/hadoop/hbase/master/CatalogJanitor.java index 8f0b98b0afe..5e4c5749dc3 100644 --- a/src/main/java/org/apache/hadoop/hbase/master/CatalogJanitor.java +++ b/src/main/java/org/apache/hadoop/hbase/master/CatalogJanitor.java @@ -158,8 +158,14 @@ class CatalogJanitor extends Chore { // Compare end keys. result = Bytes.compareTo(left.getEndKey(), right.getEndKey()); if (result != 0) { - if (left.getEndKey().length == 0) return -1; // left is last region - if (right.getEndKey().length == 0) return 1; // right is the last region + if (left.getStartKey().length != 0 + && left.getEndKey().length == 0) { + return -1; // left is last region + } + if (right.getStartKey().length != 0 + && right.getEndKey().length == 0) { + return 1; // right is the last region + } return -result; // Flip the result so parent comes first. } return result;