HADOOP-15346 S3ARetryPolicy for 400/BadArgument to be "fail". Contributed by Steve Loughran.
This commit is contained in:
parent
7c9cdad6d0
commit
b0aff8a962
|
@ -175,9 +175,9 @@ public class S3ARetryPolicy implements RetryPolicy {
|
|||
// which isn't going to be recovered from
|
||||
policyMap.put(EOFException.class, retryIdempotentCalls);
|
||||
|
||||
// policy on a 400/bad request still ambiguous. Given it
|
||||
// comes and goes on test runs: try again
|
||||
policyMap.put(AWSBadRequestException.class, connectivityFailure);
|
||||
// policy on a 400/bad request still ambiguous.
|
||||
// Treated as an immediate failure
|
||||
policyMap.put(AWSBadRequestException.class, fail);
|
||||
|
||||
// Status 500 error code is also treated as a connectivity problem
|
||||
policyMap.put(AWSStatus500Exception.class, connectivityFailure);
|
||||
|
|
|
@ -283,18 +283,12 @@ public class TestInvoker extends Assert {
|
|||
/**
|
||||
* Repeatedly retry until eventually a bad request succeeds.
|
||||
*/
|
||||
@Test
|
||||
public void testRetryBadRequestIdempotent() throws Throwable {
|
||||
final AtomicInteger counter = new AtomicInteger(0);
|
||||
final int attemptsBeforeSuccess = ACTIVE_RETRY_LIMIT;
|
||||
invoker.retry("test", null, true,
|
||||
@Test(expected = AWSBadRequestException.class)
|
||||
public void testRetryBadRequestNotIdempotent() throws Throwable {
|
||||
invoker.retry("test", null, false,
|
||||
() -> {
|
||||
if (counter.incrementAndGet() < attemptsBeforeSuccess) {
|
||||
throw BAD_REQUEST;
|
||||
}
|
||||
throw BAD_REQUEST;
|
||||
});
|
||||
assertEquals(attemptsBeforeSuccess, counter.get());
|
||||
assertEquals("retry count ", attemptsBeforeSuccess - 1, retryCount);
|
||||
}
|
||||
|
||||
@Test
|
||||
|
|
Loading…
Reference in New Issue