You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jclouds.apache.org by ga...@apache.org on 2014/03/14 20:16:09 UTC
git commit: Retry on S3 HTTP 504 Gateway Timeout status codes
Repository: jclouds
Updated Branches:
refs/heads/master 33f244dba -> a7fa3b9c6
Retry on S3 HTTP 504 Gateway Timeout status codes
RiakCS using the S3 interface occasionally surfaces these status
codes.
Project: http://git-wip-us.apache.org/repos/asf/jclouds/repo
Commit: http://git-wip-us.apache.org/repos/asf/jclouds/commit/a7fa3b9c
Tree: http://git-wip-us.apache.org/repos/asf/jclouds/tree/a7fa3b9c
Diff: http://git-wip-us.apache.org/repos/asf/jclouds/diff/a7fa3b9c
Branch: refs/heads/master
Commit: a7fa3b9c620fe80eae1741078905a1d5416b88ad
Parents: 33f244d
Author: Andrew Gaul <ga...@apache.org>
Authored: Thu Mar 13 11:01:25 2014 -0700
Committer: Andrew Gaul <ga...@apache.org>
Committed: Fri Mar 14 12:15:55 2014 -0700
----------------------------------------------------------------------
.../aws/handlers/AWSServerErrorRetryHandler.java | 6 +++++-
.../handlers/AWSServerErrorRetryHandlerTest.java | 18 ++++++++++++++++++
2 files changed, 23 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/jclouds/blob/a7fa3b9c/apis/sts/src/main/java/org/jclouds/aws/handlers/AWSServerErrorRetryHandler.java
----------------------------------------------------------------------
diff --git a/apis/sts/src/main/java/org/jclouds/aws/handlers/AWSServerErrorRetryHandler.java b/apis/sts/src/main/java/org/jclouds/aws/handlers/AWSServerErrorRetryHandler.java
index 22c316e..9918303 100644
--- a/apis/sts/src/main/java/org/jclouds/aws/handlers/AWSServerErrorRetryHandler.java
+++ b/apis/sts/src/main/java/org/jclouds/aws/handlers/AWSServerErrorRetryHandler.java
@@ -50,7 +50,8 @@ public class AWSServerErrorRetryHandler extends BackoffLimitedRetryHandler {
@Override
public boolean shouldRetryRequest(HttpCommand command, HttpResponse response) {
- if (response.getStatusCode() == 503) {
+ switch (response.getStatusCode()) {
+ case 503: // Service Unavailable
// Content can be null in the case of HEAD requests
if (response.getPayload() != null) {
closeClientButKeepContentStream(response);
@@ -59,6 +60,9 @@ public class AWSServerErrorRetryHandler extends BackoffLimitedRetryHandler {
return shouldRetryRequestOnError(command, response, error);
}
}
+ break;
+ case 504: // Gateway Timeout
+ return super.shouldRetryRequest(command, response);
}
return false;
}
http://git-wip-us.apache.org/repos/asf/jclouds/blob/a7fa3b9c/apis/sts/src/test/java/org/jclouds/aws/handlers/AWSServerErrorRetryHandlerTest.java
----------------------------------------------------------------------
diff --git a/apis/sts/src/test/java/org/jclouds/aws/handlers/AWSServerErrorRetryHandlerTest.java b/apis/sts/src/test/java/org/jclouds/aws/handlers/AWSServerErrorRetryHandlerTest.java
index 218cde6..e164c6b 100644
--- a/apis/sts/src/test/java/org/jclouds/aws/handlers/AWSServerErrorRetryHandlerTest.java
+++ b/apis/sts/src/test/java/org/jclouds/aws/handlers/AWSServerErrorRetryHandlerTest.java
@@ -23,6 +23,7 @@ import static org.easymock.EasyMock.expect;
import static org.easymock.EasyMock.replay;
import static org.easymock.EasyMock.verify;
import static org.testng.Assert.assertFalse;
+import static org.testng.Assert.assertTrue;
import java.util.concurrent.atomic.AtomicInteger;
@@ -112,4 +113,21 @@ public class AWSServerErrorRetryHandlerTest {
}
+ @Test
+ public void test504DoesRetry() {
+ AWSUtils utils = createMock(AWSUtils.class);
+ HttpCommand command = createMock(HttpCommand.class);
+ expect(command.getFailureCount()).andReturn(1).anyTimes();
+ expect(command.incrementFailureCount()).andReturn(1);
+ expect(command.isReplayable()).andReturn(true);
+
+ replay(utils, command);
+
+ AWSServerErrorRetryHandler retry = new AWSServerErrorRetryHandler(utils,
+ ImmutableSet.<String> of());
+
+ assertTrue(retry.shouldRetryRequest(command, HttpResponse.builder().statusCode(504).build()));
+
+ verify(utils, command);
+ }
}