You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hc.apache.org by ol...@apache.org on 2012/07/22 21:42:29 UTC

svn commit: r1364408 - in /httpcomponents/httpclient/branches/4.2.x: RELEASE_NOTES.txt httpclient/src/main/java/org/apache/http/impl/client/AutoRetryHttpClient.java

Author: olegk
Date: Sun Jul 22 19:42:29 2012
New Revision: 1364408

URL: http://svn.apache.org/viewvc?rev=1364408&view=rev
Log:
HTTPCLIENT-1217: AutoRetryHttpClient does not release connection used by the previous response when request is retried

Modified:
    httpcomponents/httpclient/branches/4.2.x/RELEASE_NOTES.txt
    httpcomponents/httpclient/branches/4.2.x/httpclient/src/main/java/org/apache/http/impl/client/AutoRetryHttpClient.java

Modified: httpcomponents/httpclient/branches/4.2.x/RELEASE_NOTES.txt
URL: http://svn.apache.org/viewvc/httpcomponents/httpclient/branches/4.2.x/RELEASE_NOTES.txt?rev=1364408&r1=1364407&r2=1364408&view=diff
==============================================================================
--- httpcomponents/httpclient/branches/4.2.x/RELEASE_NOTES.txt (original)
+++ httpcomponents/httpclient/branches/4.2.x/RELEASE_NOTES.txt Sun Jul 22 19:42:29 2012
@@ -1,3 +1,10 @@
+Changes since 4.2.1
+
+* [HTTPCLIENT-1217] AutoRetryHttpClient does not release connection used by the previous response 
+  when request is retried
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+
 Release 4.2.1 
 -------------------
 

Modified: httpcomponents/httpclient/branches/4.2.x/httpclient/src/main/java/org/apache/http/impl/client/AutoRetryHttpClient.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpclient/branches/4.2.x/httpclient/src/main/java/org/apache/http/impl/client/AutoRetryHttpClient.java?rev=1364408&r1=1364407&r2=1364408&view=diff
==============================================================================
--- httpcomponents/httpclient/branches/4.2.x/httpclient/src/main/java/org/apache/http/impl/client/AutoRetryHttpClient.java (original)
+++ httpcomponents/httpclient/branches/4.2.x/httpclient/src/main/java/org/apache/http/impl/client/AutoRetryHttpClient.java Sun Jul 22 19:42:29 2012
@@ -44,6 +44,7 @@ import org.apache.http.client.methods.Ht
 import org.apache.http.conn.ClientConnectionManager;
 import org.apache.http.params.HttpParams;
 import org.apache.http.protocol.HttpContext;
+import org.apache.http.util.EntityUtils;
 
 /**
  * {@link HttpClient} implementation that can automatically retry the request in case of
@@ -154,16 +155,26 @@ public class AutoRetryHttpClient impleme
             HttpContext context) throws IOException {
         for (int c = 1;; c++) {
             HttpResponse response = backend.execute(target, request, context);
-            if (retryStrategy.retryRequest(response, c, context)) {
-                long nextInterval = retryStrategy.getRetryInterval();
+            try {
+                if (retryStrategy.retryRequest(response, c, context)) {
+                    EntityUtils.consume(response.getEntity());
+                    long nextInterval = retryStrategy.getRetryInterval();
+                    try {
+                        log.trace("Wait for " + nextInterval);
+                        Thread.sleep(nextInterval);
+                    } catch (InterruptedException e) {
+                        throw new InterruptedIOException(e.getMessage());
+                    }
+                } else {
+                    return response;
+                }
+            } catch (RuntimeException ex) {
                 try {
-                    log.trace("Wait for " + nextInterval);
-                    Thread.sleep(nextInterval);
-                } catch (InterruptedException e) {
-                    throw new InterruptedIOException(e.getMessage());
+                    EntityUtils.consume(response.getEntity());
+                } catch (IOException ioex) {
+                    log.warn("I/O error consuming response content", ioex);
                 }
-            } else {
-                return response;
+                throw ex;
             }
         }
     }