HBASE-22699 refactor isMetaClearingException (#436)
Signed-off-by: Duo Zhang <zhangduo@apache.org>
This commit is contained in:
parent
3867fae04d
commit
009851d680
|
@ -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;
|
||||||
|
|
Loading…
Reference in New Issue