HADOOP-12386. RetryPolicies.RETRY_FOREVER should be able to specify a retry interval. (Sunil G via wangda)
Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/6b97fa66 Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/6b97fa66 Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/6b97fa66 Branch: refs/heads/HDFS-7966 Commit: 6b97fa6652da29a203f1537508b43333633eb760 Parents: ee4ee6a Author: Wangda Tan <wan...@apache.org> Authored: Thu Sep 17 17:46:28 2015 -0700 Committer: Wangda Tan <wan...@apache.org> Committed: Thu Sep 17 17:46:28 2015 -0700 ---------------------------------------------------------------------- hadoop-common-project/hadoop-common/CHANGES.txt | 3 +++ .../java/org/apache/hadoop/io/retry/RetryPolicies.java | 13 ++++++++++++- .../org/apache/hadoop/io/retry/TestRetryProxy.java | 13 ++++++++++++- 3 files changed, 27 insertions(+), 2 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hadoop/blob/6b97fa66/hadoop-common-project/hadoop-common/CHANGES.txt ---------------------------------------------------------------------- diff --git a/hadoop-common-project/hadoop-common/CHANGES.txt b/hadoop-common-project/hadoop-common/CHANGES.txt index ecd8833..54d7b6b 100644 --- a/hadoop-common-project/hadoop-common/CHANGES.txt +++ b/hadoop-common-project/hadoop-common/CHANGES.txt @@ -1072,6 +1072,9 @@ Release 2.8.0 - UNRELEASED HADOOP-12087. [JDK8] Fix javadoc errors caused by incorrect or illegal tags. (Akira AJISAKA via stevel). + HADOOP-12386. RetryPolicies.RETRY_FOREVER should be able to specify a + retry interval. (Sunil G via wangda) + OPTIMIZATIONS HADOOP-12051. ProtobufRpcEngine.invoke() should use Exception.toString() http://git-wip-us.apache.org/repos/asf/hadoop/blob/6b97fa66/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/io/retry/RetryPolicies.java ---------------------------------------------------------------------- diff --git a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/io/retry/RetryPolicies.java b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/io/retry/RetryPolicies.java index d27096f..871a8ba 100644 --- a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/io/retry/RetryPolicies.java +++ b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/io/retry/RetryPolicies.java @@ -65,6 +65,17 @@ public class RetryPolicies { /** * <p> + * Keep trying forever with a fixed time between attempts. + * </p> + */ + public static final RetryPolicy retryForeverWithFixedSleep(long sleepTime, + TimeUnit timeUnit) { + return new RetryUpToMaximumCountWithFixedSleep(Integer.MAX_VALUE, + sleepTime, timeUnit); + } + + /** + * <p> * Keep trying a limited number of times, waiting a fixed time between attempts, * and then fail by re-throwing the exception. * </p> @@ -151,7 +162,7 @@ public class RetryPolicies { return new FailoverOnNetworkExceptionRetry(fallbackPolicy, maxFailovers, maxRetries, delayMillis, maxDelayBase); } - + static class TryOnceThenFail implements RetryPolicy { @Override public RetryAction shouldRetry(Exception e, int retries, int failovers, http://git-wip-us.apache.org/repos/asf/hadoop/blob/6b97fa66/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/io/retry/TestRetryProxy.java ---------------------------------------------------------------------- diff --git a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/io/retry/TestRetryProxy.java b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/io/retry/TestRetryProxy.java index 79ea1b9..81f3a9b 100644 --- a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/io/retry/TestRetryProxy.java +++ b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/io/retry/TestRetryProxy.java @@ -25,6 +25,7 @@ import static org.apache.hadoop.io.retry.RetryPolicies.retryByRemoteException; import static org.apache.hadoop.io.retry.RetryPolicies.retryUpToMaximumCountWithFixedSleep; import static org.apache.hadoop.io.retry.RetryPolicies.retryUpToMaximumCountWithProportionalSleep; import static org.apache.hadoop.io.retry.RetryPolicies.retryUpToMaximumTimeWithFixedSleep; +import static org.apache.hadoop.io.retry.RetryPolicies.retryForeverWithFixedSleep; import static org.apache.hadoop.io.retry.RetryPolicies.exponentialBackoffRetry; import static org.junit.Assert.*; @@ -110,7 +111,17 @@ public class TestRetryProxy { unreliable.failsOnceThenSucceeds(); unreliable.failsTenTimesThenSucceeds(); } - + + @Test + public void testRetryForeverWithFixedSleep() throws UnreliableException { + UnreliableInterface unreliable = (UnreliableInterface) RetryProxy.create( + UnreliableInterface.class, unreliableImpl, + retryForeverWithFixedSleep(1, TimeUnit.MILLISECONDS)); + unreliable.alwaysSucceeds(); + unreliable.failsOnceThenSucceeds(); + unreliable.failsTenTimesThenSucceeds(); + } + @Test public void testRetryUpToMaximumCountWithFixedSleep() throws UnreliableException { UnreliableInterface unreliable = (UnreliableInterface)