Browse Source

HADOOP-2308 null regioninfo breaks meta scanner

git-svn-id: https://svn.apache.org/repos/asf/lucene/hadoop/trunk@599875 13f79535-47bb-0310-9956-ffa450edef68
Michael Stack 17 năm trước cách đây
mục cha
commit
b3c1ef0d9a

+ 1 - 0
src/contrib/hbase/CHANGES.txt

@@ -41,6 +41,7 @@ Trunk (unreleased changes)
                (Bryan Duxbury via Stack)
                (Bryan Duxbury via Stack)
    HADOOP-2295 Fix assigning a region to multiple servers
    HADOOP-2295 Fix assigning a region to multiple servers
    HADOOP-2234 TableInputFormat erroneously aggregates map values
    HADOOP-2234 TableInputFormat erroneously aggregates map values
+   HADOOP-2308 null regioninfo breaks meta scanner
 
 
   IMPROVEMENTS
   IMPROVEMENTS
    HADOOP-2401 Add convenience put method that takes writable
    HADOOP-2401 Add convenience put method that takes writable

+ 8 - 3
src/contrib/hbase/src/java/org/apache/hadoop/hbase/HMaster.java

@@ -229,14 +229,19 @@ public class HMaster extends Thread implements HConstants, HMasterInterface,
           if (values == null || values.size() == 0) {
           if (values == null || values.size() == 0) {
             break;
             break;
           }
           }
-
           for (Map.Entry<Writable, Writable> e: values.entrySet()) {
           for (Map.Entry<Writable, Writable> e: values.entrySet()) {
             HStoreKey key = (HStoreKey) e.getKey();
             HStoreKey key = (HStoreKey) e.getKey();
             results.put(key.getColumn(),
             results.put(key.getColumn(),
                 ((ImmutableBytesWritable) e.getValue()).get());
                 ((ImmutableBytesWritable) e.getValue()).get());
           }
           }
-          HRegionInfo info = (HRegionInfo) Writables.getWritable(
-              results.get(COL_REGIONINFO), new HRegionInfo());
+          byte [] bytes = results.get(COL_REGIONINFO);
+          if (bytes == null) {
+            LOG.warn(COL_REGIONINFO.toString() + " is empty; has keys: " +
+              values.keySet().toString());
+            continue;
+          }
+          HRegionInfo info = (HRegionInfo) Writables.getWritable(bytes,
+            new HRegionInfo());
           String serverName = Writables.bytesToString(results.get(COL_SERVER));
           String serverName = Writables.bytesToString(results.get(COL_SERVER));
           long startCode = Writables.bytesToLong(results.get(COL_STARTCODE));
           long startCode = Writables.bytesToLong(results.get(COL_STARTCODE));
           if (LOG.isDebugEnabled()) {
           if (LOG.isDebugEnabled()) {