HBASE-17587 Do not Rethrow DoNotRetryIOException as UnknownScannerException

Signed-off-by: Andrew Purtell <[email protected]>


Project: http://git-wip-us.apache.org/repos/asf/hbase/repo
Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/cd847e59
Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/cd847e59
Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/cd847e59

Branch: refs/heads/branch-1
Commit: cd847e599cd9c9eaff13e7b2e9ff1f1717b08d48
Parents: f59cf6f
Author: Zach York <[email protected]>
Authored: Thu Feb 2 02:44:58 2017 -0800
Committer: Andrew Purtell <[email protected]>
Committed: Thu Feb 2 17:09:34 2017 -0800

----------------------------------------------------------------------
 .../apache/hadoop/hbase/regionserver/RSRpcServices.java   | 10 +++++++---
 1 file changed, 7 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hbase/blob/cd847e59/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RSRpcServices.java
----------------------------------------------------------------------
diff --git 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RSRpcServices.java
 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RSRpcServices.java
index 3310bfd..c5a850b 100644
--- 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RSRpcServices.java
+++ 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RSRpcServices.java
@@ -89,7 +89,6 @@ import 
org.apache.hadoop.hbase.exceptions.OutOfOrderScannerNextException;
 import org.apache.hadoop.hbase.exceptions.ScannerResetException;
 import org.apache.hadoop.hbase.filter.ByteArrayComparable;
 import org.apache.hadoop.hbase.filter.CompareFilter.CompareOp;
-import org.apache.hadoop.hbase.io.hfile.CorruptHFileException;
 import org.apache.hadoop.hbase.ipc.HBaseRPCErrorHandler;
 import org.apache.hadoop.hbase.ipc.PayloadCarryingRpcController;
 import org.apache.hadoop.hbase.ipc.PriorityFunction;
@@ -2856,12 +2855,17 @@ public class RSRpcServices implements 
HBaseRPCErrorHandler,
         // row that the client has last seen.
         closeScanner(region, scanner, scannerName, context);
 
+        // rethrow DoNotRetryIOException. This can avoid the retry in 
ClientScanner.
+        if (e instanceof DoNotRetryIOException) {
+          throw e;
+        }
 
-        // If it is a CorruptHFileException or a FileNotFoundException, throw 
the
+        // If it is a FileNotFoundException, wrap as a
         // DoNotRetryIOException. This can avoid the retry in ClientScanner.
-        if (e instanceof CorruptHFileException || e instanceof 
FileNotFoundException) {
+        if (e instanceof FileNotFoundException) {
           throw new DoNotRetryIOException(e);
         }
+
         // We closed the scanner already. Instead of throwing the IOException, 
and client
         // retrying with the same scannerId only to get USE on the next RPC, 
we directly throw
         // a special exception to save an RPC.

Reply via email to