You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by te...@apache.org on 2013/05/29 18:21:33 UTC

svn commit: r1487533 - in /hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase: regionserver/HRegionServer.java util/hbck/TableLockChecker.java

Author: tedyu
Date: Wed May 29 16:21:33 2013
New Revision: 1487533

URL: http://svn.apache.org/r1487533
Log:
HBASE-8634 Fix potential null pointer dereference in HRegionServer and TableLockChecker (Ted Yu)


Modified:
    hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java
    hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/util/hbck/TableLockChecker.java

Modified: hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java
URL: http://svn.apache.org/viewvc/hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java?rev=1487533&r1=1487532&r2=1487533&view=diff
==============================================================================
--- hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java (original)
+++ hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java Wed May 29 16:21:33 2013
@@ -2829,7 +2829,7 @@ public class HRegionServer implements Cl
     PayloadCarryingRpcController controller = (PayloadCarryingRpcController)rpcc;
     CellScanner cellScanner = controller != null? controller.cellScanner(): null;
     // Clear scanner so we are not holding on to reference across call.
-    controller.setCellScanner(null);
+    if (controller != null) controller.setCellScanner(null);
     try {
       requestCount.increment();
       HRegion region = getRegion(request.getRegion());
@@ -2915,7 +2915,7 @@ public class HRegionServer implements Cl
         builder.setResult(ProtobufUtil.toResultNoData(r));
         cellsToReturn = r;
       }
-      if (cellsToReturn != null) {
+      if (controller != null && cellsToReturn != null) {
         controller.setCellScanner(cellsToReturn.cellScanner());
       }
       return builder.build();
@@ -3171,9 +3171,9 @@ public class HRegionServer implements Cl
     // rpc controller is how we bring in data via the back door;  it is unprotobuf'ed data.
     // It is also the conduit via which we pass back data.
     PayloadCarryingRpcController controller = (PayloadCarryingRpcController)rpcc;
-    CellScanner cellScanner = controller != null? controller.cellScanner(): null;
+    CellScanner cellScanner = controller != null ? controller.cellScanner(): null;
     // Clear scanner so we are not holding on to reference across call.
-    controller.setCellScanner(null);
+    if (controller != null) controller.setCellScanner(null);
     List<CellScannable> cellsToReturn = null;
     try {
       HRegion region = getRegion(request.getRegion());
@@ -3265,7 +3265,7 @@ public class HRegionServer implements Cl
         }
       }
       // Load the controller with the Cells to return.
-      if (cellsToReturn != null && !cellsToReturn.isEmpty()) {
+      if (cellsToReturn != null && !cellsToReturn.isEmpty() && controller != null) {
         controller.setCellScanner(CellUtil.createCellScanner(cellsToReturn));
       }
       return builder.build();
@@ -3739,7 +3739,7 @@ public class HRegionServer implements Cl
     PayloadCarryingRpcController controller = (PayloadCarryingRpcController) rpcc;
     CellScanner cellScanner = controller != null ? controller.cellScanner() : null;
     // Clear scanner so we are not holding on to reference across call.
-    controller.setCellScanner(null);
+    if (controller != null) controller.setCellScanner(null);
     try {
       checkOpen();
       HRegion region = getRegion(request.getRegion());

Modified: hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/util/hbck/TableLockChecker.java
URL: http://svn.apache.org/viewvc/hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/util/hbck/TableLockChecker.java?rev=1487533&r1=1487532&r2=1487533&view=diff
==============================================================================
--- hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/util/hbck/TableLockChecker.java (original)
+++ hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/util/hbck/TableLockChecker.java Wed May 29 16:21:33 2013
@@ -65,7 +65,7 @@ public class TableLockChecker {
               data.getPurpose(), data.getIsShared(), data.getCreateTime());
         }
 
-        if (data.hasCreateTime() && data.getCreateTime() < expireDate) {
+        if (data != null && data.hasCreateTime() && data.getCreateTime() < expireDate) {
           errorReporter.reportError(HBaseFsck.ErrorReporter.ERROR_CODE.EXPIRED_TABLE_LOCK, msg);
         } else {
           errorReporter.print(msg);