You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by mp...@apache.org on 2015/05/25 17:07:20 UTC

svn commit: r1681592 - /sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/transport/impl/SimpleHttpDistributionTransport.java

Author: mpetria
Date: Mon May 25 15:07:20 2015
New Revision: 1681592

URL: http://svn.apache.org/r1681592
Log:
SLING-4745: do not drop already retrieved packages when a transport error occurs

Modified:
    sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/transport/impl/SimpleHttpDistributionTransport.java

Modified: sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/transport/impl/SimpleHttpDistributionTransport.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/transport/impl/SimpleHttpDistributionTransport.java?rev=1681592&r1=1681591&r2=1681592&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/transport/impl/SimpleHttpDistributionTransport.java (original)
+++ sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/transport/impl/SimpleHttpDistributionTransport.java Mon May 25 15:07:20 2015
@@ -127,10 +127,11 @@ public class SimpleHttpDistributionTrans
     public List<DistributionPackage> retrievePackages(@Nonnull ResourceResolver resourceResolver, @Nonnull DistributionRequest
             distributionRequest) throws DistributionTransportException {
         log.debug("pulling from {}", distributionEndpoint.getUri());
+        List<DistributionPackage> result = new ArrayList<DistributionPackage>();
+
 
         try {
             URI distributionURI = RequestUtils.appendDistributionRequest(distributionEndpoint.getUri(), distributionRequest);
-            List<DistributionPackage> result = new ArrayList<DistributionPackage>();
 
             // TODO : executor should be cached and reused
 
@@ -145,50 +146,45 @@ public class SimpleHttpDistributionTrans
 
             // continuously requests package streams as long as type header is received with the response (meaning there's a package of a certain type)
             HttpResponse httpResponse;
-            try {
 
-                int pulls = 0;
-                int maxNumberOfPackages = DistributionRequestType.PULL.equals(distributionRequest.getRequestType()) ? maxPullItems : 1;
-                while (pulls < maxNumberOfPackages
-                        && (httpResponse = executor.execute(req).returnResponse()).getStatusLine().getStatusCode() == 200) {
-                    HttpEntity entity = httpResponse.getEntity();
-                    if (entity != null) {
-                        final DistributionPackage responsePackage = packageBuilder.readPackage(resourceResolver, entity.getContent());
-                        if (responsePackage != null) {
-                            responsePackage.getInfo().setOrigin(distributionURI);
-                            log.debug("pulled package no {} with info {}", pulls, responsePackage.getInfo());
-
-                            result.add(responsePackage);
-                        } else {
-                            log.warn("responsePackage is null");
-                        }
+            int pulls = 0;
+            int maxNumberOfPackages = DistributionRequestType.PULL.equals(distributionRequest.getRequestType()) ? maxPullItems : 1;
+            while (pulls < maxNumberOfPackages
+                    && (httpResponse = executor.execute(req).returnResponse()).getStatusLine().getStatusCode() == 200) {
+                HttpEntity entity = httpResponse.getEntity();
+                if (entity != null) {
+                    final DistributionPackage responsePackage = packageBuilder.readPackage(resourceResolver, entity.getContent());
+                    if (responsePackage != null) {
+                        responsePackage.getInfo().setOrigin(distributionURI);
+                        log.debug("pulled package no {} with info {}", pulls, responsePackage.getInfo());
 
-                        pulls++;
+                        result.add(responsePackage);
                     } else {
-                        log.info("no entity available");
-                        break;
+                        log.warn("responsePackage is null");
                     }
-                }
 
-                // only log.info when something is pulled in order to keep a quite log
-                if (pulls == 0) {
-                    log.debug("pulled {} packages from {}", pulls, distributionEndpoint.getUri());
+                    pulls++;
                 } else {
-                    log.info("pulled {} packages from {}", pulls, distributionEndpoint.getUri());
+                    log.info("no entity available");
+                    break;
                 }
-
-            } catch (HttpHostConnectException e) {
-                log.info("could not connect to {} - skipping", distributionEndpoint.getUri());
             }
 
-            return result;
-
+        } catch (HttpHostConnectException e) {
+            log.info("could not connect to {} - skipping", distributionEndpoint.getUri());
         } catch (Exception ex) {
             log.error("cannot retrieve packages", ex);
+        }
+
 
-            throw new DistributionTransportException(ex);
+        // only log.info when something is pulled in order to keep a quite log
+        if (result.size() == 0) {
+            log.debug("pulled {} packages from {}", result.size(), distributionEndpoint.getUri());
+        } else {
+            log.info("pulled {} packages from {}", result.size(), distributionEndpoint.getUri());
         }
 
+        return result;
     }
 
     protected Executor authenticate(DistributionTransportSecret secret, Executor executor) {