YARN-6970. Add PoolInitializationException as retriable exception in FederationFacade. (Giovanni Matteo Fumarola via Subru).
This commit is contained in:
parent
1db4788b7d
commit
ad2a350662
|
@ -70,6 +70,7 @@ import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
import com.google.common.annotations.VisibleForTesting;
|
import com.google.common.annotations.VisibleForTesting;
|
||||||
|
import com.zaxxer.hikari.pool.HikariPool.PoolInitializationException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
|
@ -162,6 +163,7 @@ public final class FederationStateStoreFacade {
|
||||||
exceptionToPolicyMap.put(FederationStateStoreRetriableException.class,
|
exceptionToPolicyMap.put(FederationStateStoreRetriableException.class,
|
||||||
basePolicy);
|
basePolicy);
|
||||||
exceptionToPolicyMap.put(CacheLoaderException.class, basePolicy);
|
exceptionToPolicyMap.put(CacheLoaderException.class, basePolicy);
|
||||||
|
exceptionToPolicyMap.put(PoolInitializationException.class, basePolicy);
|
||||||
|
|
||||||
RetryPolicy retryPolicy = RetryPolicies.retryByException(
|
RetryPolicy retryPolicy = RetryPolicies.retryByException(
|
||||||
RetryPolicies.TRY_ONCE_THEN_FAIL, exceptionToPolicyMap);
|
RetryPolicies.TRY_ONCE_THEN_FAIL, exceptionToPolicyMap);
|
||||||
|
|
|
@ -30,6 +30,8 @@ import org.apache.hadoop.yarn.server.federation.store.exception.FederationStateS
|
||||||
import org.junit.Assert;
|
import org.junit.Assert;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
|
||||||
|
import com.zaxxer.hikari.pool.HikariPool.PoolInitializationException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Test class to validate FederationStateStoreFacade retry policy.
|
* Test class to validate FederationStateStoreFacade retry policy.
|
||||||
*/
|
*/
|
||||||
|
@ -119,4 +121,26 @@ public class TestFederationStateStoreFacadeRetry {
|
||||||
policy.shouldRetry(new CacheLoaderException(""), maxRetries, 0, false);
|
policy.shouldRetry(new CacheLoaderException(""), maxRetries, 0, false);
|
||||||
Assert.assertEquals(RetryAction.FAIL.action, action.action);
|
Assert.assertEquals(RetryAction.FAIL.action, action.action);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Test to validate that PoolInitializationException is a retriable exception.
|
||||||
|
*/
|
||||||
|
@Test
|
||||||
|
public void testFacadePoolInitRetriableException() throws Exception {
|
||||||
|
// PoolInitializationException is a retriable exception
|
||||||
|
conf = new Configuration();
|
||||||
|
conf.setInt(YarnConfiguration.CLIENT_FAILOVER_RETRIES, maxRetries);
|
||||||
|
RetryPolicy policy = FederationStateStoreFacade.createRetryPolicy(conf);
|
||||||
|
RetryAction action = policy.shouldRetry(
|
||||||
|
new PoolInitializationException(new YarnException()), 0, 0, false);
|
||||||
|
// We compare only the action, delay and the reason are random value
|
||||||
|
// during this test
|
||||||
|
Assert.assertEquals(RetryAction.RETRY.action, action.action);
|
||||||
|
|
||||||
|
// After maxRetries we stop to retry
|
||||||
|
action =
|
||||||
|
policy.shouldRetry(new PoolInitializationException(new YarnException()),
|
||||||
|
maxRetries, 0, false);
|
||||||
|
Assert.assertEquals(RetryAction.FAIL.action, action.action);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue