HBASE-22699 refactor isMetaClearingException (#436)

Signed-off-by: Duo Zhang <zhangduo@apache.org>
This commit is contained in:
johnhomsea 2019-08-12 15:57:21 +08:00 committed by Duo Zhang
parent 3867fae04d
commit 009851d680
1 changed files with 15 additions and 11 deletions

View File

@ -32,7 +32,6 @@ import java.util.concurrent.TimeoutException;
import org.apache.hadoop.hbase.CallDroppedException; import org.apache.hadoop.hbase.CallDroppedException;
import org.apache.hadoop.hbase.CallQueueTooBigException; import org.apache.hadoop.hbase.CallQueueTooBigException;
import org.apache.hadoop.hbase.DoNotRetryIOException; import org.apache.hadoop.hbase.DoNotRetryIOException;
import org.apache.hadoop.hbase.MultiActionResultTooLarge;
import org.apache.hadoop.hbase.NotServingRegionException; import org.apache.hadoop.hbase.NotServingRegionException;
import org.apache.hadoop.hbase.RegionTooBusyException; import org.apache.hadoop.hbase.RegionTooBusyException;
import org.apache.hadoop.hbase.RetryImmediatelyException; import org.apache.hadoop.hbase.RetryImmediatelyException;
@ -59,18 +58,23 @@ public final class ClientExceptionsUtil {
if (cur == null) { if (cur == null) {
return true; return true;
} }
return !isSpecialException(cur) || (cur instanceof RegionMovedException) return !regionDefinitelyOnTheRegionServerException(cur);
|| cur instanceof NotServingRegionException;
} }
public static boolean isSpecialException(Throwable cur) { private static boolean regionDefinitelyOnTheRegionServerException(Throwable t) {
return (cur instanceof RegionMovedException || cur instanceof RegionOpeningException return (t instanceof RegionTooBusyException || t instanceof RpcThrottlingException
|| cur instanceof RegionTooBusyException || cur instanceof RpcThrottlingException || t instanceof RetryImmediatelyException || t instanceof CallQueueTooBigException
|| cur instanceof MultiActionResultTooLarge || cur instanceof RetryImmediatelyException || t instanceof CallDroppedException || t instanceof NotServingRegionException
|| cur instanceof CallQueueTooBigException || cur instanceof CallDroppedException || t instanceof RequestTooBigException);
|| cur instanceof NotServingRegionException || cur instanceof RequestTooBigException);
} }
/**
* This function is the alias of regionDefinitelyOnTheRegionServerException,
* whose name is confusing in the function findException().
*/
private static boolean matchExceptionWeCare(Throwable t) {
return regionDefinitelyOnTheRegionServerException(t);
}
/** /**
* Look for an exception we know in the remote exception: * Look for an exception we know in the remote exception:
@ -87,7 +91,7 @@ public final class ClientExceptionsUtil {
} }
Throwable cur = (Throwable) exception; Throwable cur = (Throwable) exception;
while (cur != null) { while (cur != null) {
if (isSpecialException(cur)) { if (matchExceptionWeCare(cur)) {
return cur; return cur;
} }
if (cur instanceof RemoteException) { if (cur instanceof RemoteException) {
@ -95,7 +99,7 @@ public final class ClientExceptionsUtil {
cur = re.unwrapRemoteException(); cur = re.unwrapRemoteException();
// unwrapRemoteException can return the exception given as a parameter when it cannot // unwrapRemoteException can return the exception given as a parameter when it cannot
// unwrap it. In this case, there is no need to look further // unwrap it. In this case, there is no need to look further
// noinspection ObjectEquality // noinspection ObjectEquality
if (cur == re) { if (cur == re) {
return cur; return cur;