Revert "HBASE-22700 refactor isMetaClearingException (#501)"
This reverts commit cb62f73406
.
This commit is contained in:
parent
08b82c5c8c
commit
1655360951
|
@ -19,7 +19,6 @@ package org.apache.hadoop.hbase.client;
|
|||
|
||||
import static org.apache.hadoop.hbase.exceptions.ClientExceptionsUtil.findException;
|
||||
import static org.apache.hadoop.hbase.exceptions.ClientExceptionsUtil.isMetaClearingException;
|
||||
import static org.apache.hadoop.hbase.exceptions.ClientExceptionsUtil.isRegionServerOverloadedException;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.Optional;
|
||||
|
@ -68,8 +67,7 @@ final class AsyncRegionLocatorHelper {
|
|||
LOG.debug("The actual exception when updating {} is {}", loc,
|
||||
cause != null ? cause.toString() : "none");
|
||||
}
|
||||
if (cause == null || !isMetaClearingException(cause)
|
||||
|| isRegionServerOverloadedException(cause)) {
|
||||
if (cause == null || !isMetaClearingException(cause)) {
|
||||
LOG.debug("Will not update {} because the exception is null or not the one we care about",
|
||||
loc);
|
||||
return;
|
||||
|
|
|
@ -32,6 +32,7 @@ import java.util.concurrent.TimeoutException;
|
|||
import org.apache.hadoop.hbase.CallDroppedException;
|
||||
import org.apache.hadoop.hbase.CallQueueTooBigException;
|
||||
import org.apache.hadoop.hbase.DoNotRetryIOException;
|
||||
import org.apache.hadoop.hbase.MultiActionResultTooLarge;
|
||||
import org.apache.hadoop.hbase.NotServingRegionException;
|
||||
import org.apache.hadoop.hbase.RegionTooBusyException;
|
||||
import org.apache.hadoop.hbase.RetryImmediatelyException;
|
||||
|
@ -58,28 +59,18 @@ public final class ClientExceptionsUtil {
|
|||
if (cur == null) {
|
||||
return true;
|
||||
}
|
||||
return !isMetaCachePreservingException(cur);
|
||||
return !isSpecialException(cur) || (cur instanceof RegionMovedException)
|
||||
|| cur instanceof NotServingRegionException;
|
||||
}
|
||||
|
||||
public static boolean isRegionServerOverloadedException(Throwable t) {
|
||||
t = findException(t);
|
||||
return isInstanceOfRegionServerOverloadedException(t);
|
||||
public static boolean isSpecialException(Throwable cur) {
|
||||
return (cur instanceof RegionMovedException || cur instanceof RegionOpeningException
|
||||
|| cur instanceof RegionTooBusyException || cur instanceof RpcThrottlingException
|
||||
|| cur instanceof MultiActionResultTooLarge || cur instanceof RetryImmediatelyException
|
||||
|| cur instanceof CallQueueTooBigException || cur instanceof CallDroppedException
|
||||
|| cur instanceof NotServingRegionException || cur instanceof RequestTooBigException);
|
||||
}
|
||||
|
||||
private static boolean isInstanceOfRegionServerOverloadedException(Throwable t) {
|
||||
return t instanceof CallQueueTooBigException || t instanceof CallDroppedException;
|
||||
}
|
||||
|
||||
private static boolean isMetaCachePreservingException(Throwable t) {
|
||||
return t instanceof RegionOpeningException || t instanceof RegionTooBusyException
|
||||
|| t instanceof RpcThrottlingException || t instanceof RetryImmediatelyException
|
||||
|| t instanceof RequestTooBigException;
|
||||
}
|
||||
|
||||
private static boolean isExceptionWeCare(Throwable t) {
|
||||
return isMetaCachePreservingException(t) || isInstanceOfRegionServerOverloadedException(t)
|
||||
|| t instanceof NotServingRegionException;
|
||||
}
|
||||
|
||||
/**
|
||||
* Look for an exception we know in the remote exception:
|
||||
|
@ -96,7 +87,7 @@ public final class ClientExceptionsUtil {
|
|||
}
|
||||
Throwable cur = (Throwable) exception;
|
||||
while (cur != null) {
|
||||
if (isExceptionWeCare(cur)) {
|
||||
if (isSpecialException(cur)) {
|
||||
return cur;
|
||||
}
|
||||
if (cur instanceof RemoteException) {
|
||||
|
@ -104,7 +95,7 @@ public final class ClientExceptionsUtil {
|
|||
cur = re.unwrapRemoteException();
|
||||
|
||||
// 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
|
||||
if (cur == re) {
|
||||
return cur;
|
||||
|
|
|
@ -27,7 +27,6 @@ import java.io.IOException;
|
|||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import org.apache.hadoop.conf.Configuration;
|
||||
import org.apache.hadoop.hbase.CallDroppedException;
|
||||
import org.apache.hadoop.hbase.CallQueueTooBigException;
|
||||
import org.apache.hadoop.hbase.HBaseClassTestRule;
|
||||
import org.apache.hadoop.hbase.HBaseTestingUtility;
|
||||
|
@ -39,7 +38,6 @@ import org.apache.hadoop.hbase.RetryImmediatelyException;
|
|||
import org.apache.hadoop.hbase.TableName;
|
||||
import org.apache.hadoop.hbase.exceptions.ClientExceptionsUtil;
|
||||
import org.apache.hadoop.hbase.exceptions.RegionOpeningException;
|
||||
import org.apache.hadoop.hbase.exceptions.RequestTooBigException;
|
||||
import org.apache.hadoop.hbase.quotas.RpcThrottlingException;
|
||||
import org.apache.hadoop.hbase.regionserver.HRegionServer;
|
||||
import org.apache.hadoop.hbase.regionserver.RSRpcServices;
|
||||
|
@ -151,14 +149,12 @@ public class TestMetaCache {
|
|||
table.mutateRow(mutations);
|
||||
} catch (IOException ex) {
|
||||
// Only keep track of the last exception that updated the meta cache
|
||||
if ((ClientExceptionsUtil.isMetaClearingException(ex)
|
||||
&& !ClientExceptionsUtil.isRegionServerOverloadedException(ex)) || success) {
|
||||
if (ClientExceptionsUtil.isMetaClearingException(ex) || success) {
|
||||
exp = ex;
|
||||
}
|
||||
}
|
||||
// Do not test if we did not touch the meta cache in this iteration.
|
||||
if (exp != null && ClientExceptionsUtil.isMetaClearingException(exp)
|
||||
&& !ClientExceptionsUtil.isRegionServerOverloadedException(exp)) {
|
||||
if (exp != null && ClientExceptionsUtil.isMetaClearingException(exp)) {
|
||||
assertNull(locator.getRegionLocationInCache(TABLE_NAME, row));
|
||||
} else if (success) {
|
||||
assertNotNull(locator.getRegionLocationInCache(TABLE_NAME, row));
|
||||
|
@ -203,8 +199,7 @@ public class TestMetaCache {
|
|||
return Arrays.asList(new RegionOpeningException(" "),
|
||||
new RegionTooBusyException("Some old message"), new RpcThrottlingException(" "),
|
||||
new MultiActionResultTooLarge(" "), new RetryImmediatelyException(" "),
|
||||
new RequestTooBigException(), new CallQueueTooBigException(),
|
||||
new CallDroppedException());
|
||||
new CallQueueTooBigException());
|
||||
}
|
||||
|
||||
public static class RegionServerWithFakeRpcServices extends HRegionServer {
|
||||
|
|
Loading…
Reference in New Issue