From bb7f82ac7162cdecce0805b4d5793d6d917f8849 Mon Sep 17 00:00:00 2001 From: Zhihong Yu Date: Wed, 7 Dec 2011 21:05:59 +0000 Subject: [PATCH] HBASE-4927 Addendum fixes case where start key is empty and end key is empty git-svn-id: https://svn.apache.org/repos/asf/hbase/trunk@1211632 13f79535-47bb-0310-9956-ffa450edef68 --- src/main/java/org/apache/hadoop/hbase/HRegionInfo.java | 10 ++++++++-- .../org/apache/hadoop/hbase/master/CatalogJanitor.java | 10 ++++++++-- 2 files changed, 16 insertions(+), 4 deletions(-) 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;