Author: tommaso Date: Thu May 4 14:00:21 2017 New Revision: 1793803 URL: http://svn.apache.org/viewvc?rev=1793803&view=rev Log: SLING-5952 - added timeout configs to http transport
Modified: sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/agent/impl/ForwardDistributionAgentFactory.java sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/agent/impl/ReverseDistributionAgentFactory.java sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/agent/impl/SyncDistributionAgentFactory.java sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/packaging/impl/exporter/RemoteDistributionPackageExporter.java sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/packaging/impl/exporter/RemoteDistributionPackageExporterFactory.java sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/packaging/impl/importer/RemoteDistributionPackageImporter.java sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/packaging/impl/importer/RemoteDistributionPackageImporterFactory.java sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/transport/impl/DistributionTransport.java sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/transport/impl/HttpTransportUtils.java sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/transport/impl/SimpleHttpDistributionTransport.java sling/trunk/contrib/extensions/distribution/core/src/test/java/org/apache/sling/distribution/packaging/impl/exporter/RemoteDistributionPackageExporterTest.java sling/trunk/contrib/extensions/distribution/core/src/test/java/org/apache/sling/distribution/packaging/impl/importer/RemoteDistributionPackageImporterTest.java sling/trunk/contrib/extensions/distribution/core/src/test/java/org/apache/sling/distribution/transport/impl/SimpleHttpDistributionTransportTest.java Modified: sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/agent/impl/ForwardDistributionAgentFactory.java URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/agent/impl/ForwardDistributionAgentFactory.java?rev=1793803&r1=1793802&r2=1793803&view=diff ============================================================================== --- sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/agent/impl/ForwardDistributionAgentFactory.java (original) +++ sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/agent/impl/ForwardDistributionAgentFactory.java Thu May 4 14:00:21 2017 @@ -61,6 +61,7 @@ import org.apache.sling.distribution.que import org.apache.sling.distribution.queue.impl.jobhandling.JobHandlingDistributionQueueProvider; import org.apache.sling.distribution.queue.impl.simple.SimpleDistributionQueueProvider; import org.apache.sling.distribution.transport.DistributionTransportSecretProvider; +import org.apache.sling.distribution.transport.impl.HttpConfiguration; import org.apache.sling.distribution.trigger.DistributionTrigger; import org.apache.sling.event.jobs.JobManager; import org.apache.sling.jcr.api.SlingRepository; @@ -179,6 +180,12 @@ public class ForwardDistributionAgentFac @Property(boolValue = false, label = "Async delivery", description = "Whether or not to use a separate delivery queue to maximize transport throughput when queue has more than 100 items") public static final String ASYNC_DELIVERY = "async.delivery"; + /** + * timeout for HTTP requests + */ + @Property(label = "HTTP connection timeout", intValue = 10, description = "The connection timeout for HTTP requests (in seconds).") + public static final String HTTP = "http.conn.timeout"; + @Reference private Packaging packaging; @@ -239,6 +246,9 @@ public class ForwardDistributionAgentFac Map<String, String> priorityQueues = PropertiesUtil.toMap(config.get(PRIORITY_QUEUES), new String[0]); priorityQueues = SettingsUtils.removeEmptyEntries(priorityQueues); + Integer timeout = PropertiesUtil.toInteger(HTTP, 10) * 1000; + HttpConfiguration httpConfiguration = new HttpConfiguration(timeout); + DistributionPackageExporter packageExporter = new LocalDistributionPackageExporter(packageBuilder); DistributionQueueProvider queueProvider; @@ -293,7 +303,8 @@ public class ForwardDistributionAgentFac processingQueues.addAll(endpointNames); processingQueues.removeAll(Arrays.asList(passiveQueues)); - packageImporter = new RemoteDistributionPackageImporter(distributionLog, transportSecretProvider, importerEndpointsMap); + packageImporter = new RemoteDistributionPackageImporter(distributionLog, transportSecretProvider, + importerEndpointsMap, httpConfiguration); DistributionRequestType[] allowedRequests = new DistributionRequestType[]{DistributionRequestType.ADD, DistributionRequestType.DELETE}; Modified: sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/agent/impl/ReverseDistributionAgentFactory.java URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/agent/impl/ReverseDistributionAgentFactory.java?rev=1793803&r1=1793802&r2=1793803&view=diff ============================================================================== --- sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/agent/impl/ReverseDistributionAgentFactory.java (original) +++ sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/agent/impl/ReverseDistributionAgentFactory.java Thu May 4 14:00:21 2017 @@ -53,6 +53,7 @@ import org.apache.sling.distribution.que import org.apache.sling.distribution.queue.impl.SingleQueueDispatchingStrategy; import org.apache.sling.distribution.queue.impl.jobhandling.JobHandlingDistributionQueueProvider; import org.apache.sling.distribution.transport.DistributionTransportSecretProvider; +import org.apache.sling.distribution.transport.impl.HttpConfiguration; import org.apache.sling.distribution.trigger.DistributionTrigger; import org.apache.sling.event.jobs.JobManager; import org.apache.sling.jcr.api.SlingRepository; @@ -117,19 +118,21 @@ public class ReverseDistributionAgentFac @Property(intValue = 100, label = "Pull Items", description = "Number of subsequent pull requests to make.") private static final String PULL_ITEMS = "pull.items"; + /** + * timeout for HTTP requests + */ + @Property(label = "HTTP connection timeout", intValue = 10, description = "The connection timeout for HTTP requests (in seconds).") + public static final String HTTP = "http.conn.timeout"; @Property(name = "requestAuthorizationStrategy.target", label = "Request Authorization Strategy", description = "The target reference for the DistributionRequestAuthorizationStrategy used to authorize the access to distribution process," + "e.g. use target=(name=...) to bind to services by name.", value = SettingsUtils.COMPONENT_NAME_DEFAULT) @Reference(name = "requestAuthorizationStrategy") private DistributionRequestAuthorizationStrategy requestAuthorizationStrategy; - @Property(name = "transportSecretProvider.target", label = "Transport Secret Provider", description = "The target reference for the DistributionTransportSecretProvider used to obtain the credentials used for accessing the remote endpoints, " + "e.g. use target=(name=...) to bind to services by name.", value = SettingsUtils.COMPONENT_NAME_DEFAULT) @Reference(name = "transportSecretProvider") - private - DistributionTransportSecretProvider transportSecretProvider; - + private DistributionTransportSecretProvider transportSecretProvider; @Property(name = "packageBuilder.target", label = "Package Builder", description = "The target reference for the DistributionPackageBuilder used to create distribution packages, " + "e.g. use target=(name=...) to bind to services by name.", value = SettingsUtils.COMPONENT_NAME_DEFAULT) @@ -191,7 +194,11 @@ public class ReverseDistributionAgentFac int pullItems = PropertiesUtil.toInteger(config.get(PULL_ITEMS), Integer.MAX_VALUE); - DistributionPackageExporter packageExporter = new RemoteDistributionPackageExporter(distributionLog, packageBuilder, transportSecretProvider, exporterEndpoints, pullItems); + Integer timeout = PropertiesUtil.toInteger(HTTP, 10) * 1000; + HttpConfiguration httpConfiguration = new HttpConfiguration(timeout); + + DistributionPackageExporter packageExporter = new RemoteDistributionPackageExporter(distributionLog, packageBuilder, + transportSecretProvider, exporterEndpoints, pullItems, httpConfiguration); DistributionPackageImporter packageImporter = new LocalDistributionPackageImporter(agentName, distributionEventFactory, packageBuilder); DistributionQueueProvider queueProvider = new MonitoringDistributionQueueProvider(new JobHandlingDistributionQueueProvider(agentName, jobManager, context), context); Modified: sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/agent/impl/SyncDistributionAgentFactory.java URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/agent/impl/SyncDistributionAgentFactory.java?rev=1793803&r1=1793802&r2=1793803&view=diff ============================================================================== --- sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/agent/impl/SyncDistributionAgentFactory.java (original) +++ sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/agent/impl/SyncDistributionAgentFactory.java Thu May 4 14:00:21 2017 @@ -18,21 +18,7 @@ */ package org.apache.sling.distribution.agent.impl; -import java.util.Arrays; -import java.util.HashSet; -import java.util.Map; -import java.util.Set; -import java.util.TreeSet; - -import org.apache.felix.scr.annotations.Activate; -import org.apache.felix.scr.annotations.Component; -import org.apache.felix.scr.annotations.ConfigurationPolicy; -import org.apache.felix.scr.annotations.Deactivate; -import org.apache.felix.scr.annotations.Property; -import org.apache.felix.scr.annotations.PropertyOption; -import org.apache.felix.scr.annotations.Reference; -import org.apache.felix.scr.annotations.ReferenceCardinality; -import org.apache.felix.scr.annotations.ReferencePolicy; +import org.apache.felix.scr.annotations.*; import org.apache.jackrabbit.vault.packaging.Packaging; import org.apache.sling.api.resource.ResourceResolverFactory; import org.apache.sling.commons.osgi.PropertiesUtil; @@ -56,12 +42,15 @@ import org.apache.sling.distribution.que import org.apache.sling.distribution.queue.impl.MultipleQueueDispatchingStrategy; import org.apache.sling.distribution.queue.impl.jobhandling.JobHandlingDistributionQueueProvider; import org.apache.sling.distribution.transport.DistributionTransportSecretProvider; +import org.apache.sling.distribution.transport.impl.HttpConfiguration; import org.apache.sling.distribution.trigger.DistributionTrigger; import org.apache.sling.event.jobs.JobManager; import org.apache.sling.jcr.api.SlingRepository; import org.apache.sling.settings.SlingSettingsService; import org.osgi.framework.BundleContext; +import java.util.*; + /** * An OSGi service factory for "synchronizing agents" that synchronize (pull and push) resources between remote instances. * @@ -77,7 +66,7 @@ import org.osgi.framework.BundleContext; @Reference(name = "triggers", referenceInterface = DistributionTrigger.class, policy = ReferencePolicy.DYNAMIC, cardinality = ReferenceCardinality.OPTIONAL_MULTIPLE, bind = "bindDistributionTrigger", unbind = "unbindDistributionTrigger") -@Property(name="webconsole.configurationFactory.nameHint", value="Agent name: {name}") +@Property(name = "webconsole.configurationFactory.nameHint", value = "Agent name: {name}") public class SyncDistributionAgentFactory extends AbstractDistributionAgentFactory<SyncDistributionAgentMBean> { @Property(label = "Name", description = "The name of the agent.") @@ -136,13 +125,18 @@ public class SyncDistributionAgentFactor @Property(intValue = 100, label = "Retry attempts", description = "The number of times to retry until the retry strategy is applied.") private static final String RETRY_ATTEMPTS = "retry.attempts"; - /** * no. of items to poll property */ @Property(intValue = 100, label = "Pull Items", description = "Number of subsequent pull requests to make.") private static final String PULL_ITEMS = "pull.items"; + /** + * timeout for HTTP requests + */ + @Property(label = "HTTP connection timeout", intValue = 10, description = "The connection timeout for HTTP requests (in seconds).") + public static final String HTTP = "http.conn.timeout"; + @Reference private Packaging packaging; @@ -155,9 +149,7 @@ public class SyncDistributionAgentFactor @Property(name = "transportSecretProvider.target", label = "Transport Secret Provider", description = "The target reference for the DistributionTransportSecretProvider used to obtain the credentials used for accessing the remote endpoints, " + "e.g. use target=(name=...) to bind to services by name.", value = SettingsUtils.COMPONENT_NAME_DEFAULT) @Reference(name = "transportSecretProvider") - private - DistributionTransportSecretProvider transportSecretProvider; - + private DistributionTransportSecretProvider transportSecretProvider; @Property(name = "packageBuilder.target", label = "Package Builder", description = "The target reference for the DistributionPackageBuilder used to create distribution packages, " + "e.g. use target=(name=...) to bind to services by name.", value = SettingsUtils.COMPONENT_NAME_DEFAULT) @@ -221,12 +213,10 @@ public class SyncDistributionAgentFactor String[] exporterEndpoints = PropertiesUtil.toStringArray(exporterEndpointsValue, new String[0]); exporterEndpoints = SettingsUtils.removeEmptyEntries(exporterEndpoints); - Map<String, String> importerEndpointsMap = SettingsUtils.toUriMap(importerEndpointsValue); int pullItems = PropertiesUtil.toInteger(config.get(PULL_ITEMS), Integer.MAX_VALUE); - DistributionQueueDispatchingStrategy exportQueueStrategy; DistributionQueueDispatchingStrategy importQueueStrategy = null; DistributionPackageImporter packageImporter; @@ -240,9 +230,15 @@ public class SyncDistributionAgentFactor String[] queueNames = queuesMap.toArray(new String[queuesMap.size()]); exportQueueStrategy = new MultipleQueueDispatchingStrategy(queueNames); - packageImporter = new RemoteDistributionPackageImporter(distributionLog, transportSecretProvider, importerEndpointsMap); - DistributionPackageExporter packageExporter = new RemoteDistributionPackageExporter(distributionLog, packageBuilder, transportSecretProvider, exporterEndpoints, pullItems); + Integer timeout = PropertiesUtil.toInteger(HTTP, 10) * 1000; + HttpConfiguration httpConfiguration = new HttpConfiguration(timeout); + + packageImporter = new RemoteDistributionPackageImporter(distributionLog, transportSecretProvider, + importerEndpointsMap, httpConfiguration); + + DistributionPackageExporter packageExporter = new RemoteDistributionPackageExporter(distributionLog, packageBuilder, + transportSecretProvider, exporterEndpoints, pullItems, httpConfiguration); DistributionQueueProvider queueProvider = new MonitoringDistributionQueueProvider(new JobHandlingDistributionQueueProvider(agentName, jobManager, context), context); DistributionRequestType[] allowedRequests = new DistributionRequestType[]{DistributionRequestType.PULL}; Modified: sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/packaging/impl/exporter/RemoteDistributionPackageExporter.java URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/packaging/impl/exporter/RemoteDistributionPackageExporter.java?rev=1793803&r1=1793802&r2=1793803&view=diff ============================================================================== --- sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/packaging/impl/exporter/RemoteDistributionPackageExporter.java (original) +++ sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/packaging/impl/exporter/RemoteDistributionPackageExporter.java Thu May 4 14:00:21 2017 @@ -33,11 +33,7 @@ import org.apache.sling.distribution.pac import org.apache.sling.distribution.packaging.DistributionPackageExporter; import org.apache.sling.distribution.packaging.DistributionPackageBuilder; import org.apache.sling.distribution.transport.DistributionTransportSecretProvider; -import org.apache.sling.distribution.transport.impl.DistributionTransportContext; -import org.apache.sling.distribution.transport.impl.DistributionTransport; -import org.apache.sling.distribution.transport.impl.DistributionEndpoint; -import org.apache.sling.distribution.transport.impl.RemoteDistributionPackage; -import org.apache.sling.distribution.transport.impl.SimpleHttpDistributionTransport; +import org.apache.sling.distribution.transport.impl.*; /** * Remote implementation of {@link org.apache.sling.distribution.packaging.DistributionPackageExporter} @@ -53,8 +49,7 @@ public class RemoteDistributionPackageEx public RemoteDistributionPackageExporter(DefaultDistributionLog log, DistributionPackageBuilder packageBuilder, DistributionTransportSecretProvider secretProvider, - String[] endpoints, - int maxPullItems) { + String[] endpoints, int maxPullItems, HttpConfiguration httpConfiguration) { this.maxPullItems = maxPullItems; if (packageBuilder == null) { throw new IllegalArgumentException("packageBuilder is required"); @@ -68,7 +63,8 @@ public class RemoteDistributionPackageEx for (String endpoint : endpoints) { if (endpoint != null && endpoint.length() > 0) { - transportHandlers.add(new SimpleHttpDistributionTransport(log, new DistributionEndpoint(endpoint), packageBuilder, secretProvider)); + transportHandlers.add(new SimpleHttpDistributionTransport(log, new DistributionEndpoint(endpoint), + packageBuilder, secretProvider, httpConfiguration)); } } } Modified: sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/packaging/impl/exporter/RemoteDistributionPackageExporterFactory.java URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/packaging/impl/exporter/RemoteDistributionPackageExporterFactory.java?rev=1793803&r1=1793802&r2=1793803&view=diff ============================================================================== --- sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/packaging/impl/exporter/RemoteDistributionPackageExporterFactory.java (original) +++ sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/packaging/impl/exporter/RemoteDistributionPackageExporterFactory.java Thu May 4 14:00:21 2017 @@ -41,6 +41,7 @@ import org.apache.sling.distribution.pac import org.apache.sling.distribution.packaging.DistributionPackage; import org.apache.sling.distribution.packaging.DistributionPackageBuilder; import org.apache.sling.distribution.transport.DistributionTransportSecretProvider; +import org.apache.sling.distribution.transport.impl.HttpConfiguration; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -107,8 +108,10 @@ public class RemoteDistributionPackageEx DefaultDistributionLog distributionLog = new DefaultDistributionLog(DistributionComponentKind.EXPORTER, exporterName, RemoteDistributionPackageExporter.class, DefaultDistributionLog.LogLevel.ERROR); - - exporter = new RemoteDistributionPackageExporter(distributionLog, packageBuilder, transportSecretProvider, endpoints, pollItems); + // default to 10s, we can expose it if needed + HttpConfiguration httpConfiguration = new HttpConfiguration(10000); + exporter = new RemoteDistributionPackageExporter(distributionLog, packageBuilder, transportSecretProvider, + endpoints, pollItems, httpConfiguration); } Modified: sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/packaging/impl/importer/RemoteDistributionPackageImporter.java URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/packaging/impl/importer/RemoteDistributionPackageImporter.java?rev=1793803&r1=1793802&r2=1793803&view=diff ============================================================================== --- sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/packaging/impl/importer/RemoteDistributionPackageImporter.java (original) +++ sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/packaging/impl/importer/RemoteDistributionPackageImporter.java Thu May 4 14:00:21 2017 @@ -31,10 +31,7 @@ import org.apache.sling.distribution.pac import org.apache.sling.distribution.packaging.DistributionPackageImporter; import org.apache.sling.distribution.packaging.DistributionPackageInfo; import org.apache.sling.distribution.transport.DistributionTransportSecretProvider; -import org.apache.sling.distribution.transport.impl.DistributionTransportContext; -import org.apache.sling.distribution.transport.impl.DistributionTransport; -import org.apache.sling.distribution.transport.impl.DistributionEndpoint; -import org.apache.sling.distribution.transport.impl.SimpleHttpDistributionTransport; +import org.apache.sling.distribution.transport.impl.*; /** * Remote implementation of {@link org.apache.sling.distribution.packaging.DistributionPackageImporter} @@ -45,7 +42,7 @@ public class RemoteDistributionPackageIm private final DistributionTransportContext distributionContext = new DistributionTransportContext(); public RemoteDistributionPackageImporter(DefaultDistributionLog log, DistributionTransportSecretProvider distributionTransportSecretProvider, - Map<String, String> endpointsMap) { + Map<String, String> endpointsMap, HttpConfiguration httpConfiguration) { if (distributionTransportSecretProvider == null) { throw new IllegalArgumentException("distributionTransportSecretProvider is required"); } @@ -54,7 +51,8 @@ public class RemoteDistributionPackageIm String endpointKey = entry.getKey(); String endpoint = entry.getValue(); if (endpoint != null && endpoint.length() > 0) { - transportHandlers.put(endpointKey, new SimpleHttpDistributionTransport(log, new DistributionEndpoint(endpoint), null, distributionTransportSecretProvider)); + transportHandlers.put(endpointKey, new SimpleHttpDistributionTransport(log, new DistributionEndpoint(endpoint), + null, distributionTransportSecretProvider, httpConfiguration)); } } } Modified: sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/packaging/impl/importer/RemoteDistributionPackageImporterFactory.java URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/packaging/impl/importer/RemoteDistributionPackageImporterFactory.java?rev=1793803&r1=1793802&r2=1793803&view=diff ============================================================================== --- sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/packaging/impl/importer/RemoteDistributionPackageImporterFactory.java (original) +++ sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/packaging/impl/importer/RemoteDistributionPackageImporterFactory.java Thu May 4 14:00:21 2017 @@ -40,6 +40,7 @@ import org.apache.sling.distribution.pac import org.apache.sling.distribution.packaging.DistributionPackageImporter; import org.apache.sling.distribution.packaging.DistributionPackageInfo; import org.apache.sling.distribution.transport.DistributionTransportSecretProvider; +import org.apache.sling.distribution.transport.impl.HttpConfiguration; /** * OSGi configuration factory for {@link RemoteDistributionPackageImporter}s. @@ -83,7 +84,10 @@ public class RemoteDistributionPackageIm DefaultDistributionLog distributionLog = new DefaultDistributionLog(DistributionComponentKind.IMPORTER, importerName, RemoteDistributionPackageImporter.class, DefaultDistributionLog.LogLevel.ERROR); - importer = new RemoteDistributionPackageImporter(distributionLog, transportSecretProvider, endpoints); + // default to 10s, we can expose it if needed + HttpConfiguration httpConfiguration = new HttpConfiguration(10000); + + importer = new RemoteDistributionPackageImporter(distributionLog, transportSecretProvider, endpoints, httpConfiguration); } Modified: sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/transport/impl/DistributionTransport.java URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/transport/impl/DistributionTransport.java?rev=1793803&r1=1793802&r2=1793803&view=diff ============================================================================== --- sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/transport/impl/DistributionTransport.java (original) +++ sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/transport/impl/DistributionTransport.java Thu May 4 14:00:21 2017 @@ -43,7 +43,8 @@ public interface DistributionTransport { * @throws DistributionException if the {@link DistributionPackage} * fails to be delivered to the target instance (e.g. because of network, I/O issues) */ - void deliverPackage(@Nonnull ResourceResolver resourceResolver, @Nonnull DistributionPackage distributionPackage, @Nonnull DistributionTransportContext context) throws DistributionException; + void deliverPackage(@Nonnull ResourceResolver resourceResolver, @Nonnull DistributionPackage distributionPackage, + @Nonnull DistributionTransportContext context) throws DistributionException; /** * Retrieve {@link DistributionPackage}s from a target Sling instance, which @@ -58,6 +59,7 @@ public interface DistributionTransport { * fail to be retrieved from the target instance */ @Nullable - RemoteDistributionPackage retrievePackage(@Nonnull ResourceResolver resourceResolver, @Nonnull DistributionRequest request, @Nonnull DistributionTransportContext context) throws DistributionException; + RemoteDistributionPackage retrievePackage(@Nonnull ResourceResolver resourceResolver, @Nonnull DistributionRequest request, + @Nonnull DistributionTransportContext context) throws DistributionException; } Modified: sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/transport/impl/HttpTransportUtils.java URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/transport/impl/HttpTransportUtils.java?rev=1793803&r1=1793802&r2=1793803&view=diff ============================================================================== --- sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/transport/impl/HttpTransportUtils.java (original) +++ sling/trunk/contrib/extensions/distribution/core/src/main/java/org/apache/sling/distribution/transport/impl/HttpTransportUtils.java Thu May 4 14:00:21 2017 @@ -19,22 +19,26 @@ package org.apache.sling.distribution.transport.impl; -import java.io.IOException; -import java.io.InputStream; -import java.net.URI; -import java.net.URISyntaxException; - import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.client.fluent.Executor; import org.apache.http.client.fluent.Request; import org.apache.http.client.utils.URIBuilder; +import java.io.IOException; +import java.io.InputStream; +import java.net.URI; +import java.net.URISyntaxException; + class HttpTransportUtils { - public static InputStream fetchNextPackage(Executor executor, URI distributionURI) throws URISyntaxException, IOException { + public static InputStream fetchNextPackage(Executor executor, URI distributionURI, HttpConfiguration httpConfiguration) + throws URISyntaxException, IOException { URI fetchUri = getFetchUri(distributionURI); - Request fetchReq = Request.Post(fetchUri).useExpectContinue(); + Request fetchReq = Request.Post(fetchUri) + .connectTimeout(httpConfiguration.getConnectTimeout()) + .socketTimeout(httpConfiguration.getSocketTimeout()) + .useExpectContinue(); HttpResponse httpResponse = executor.execute(fetchReq).returnResponse(); if (httpResponse.getStatusLine().getStatusCode() != 200) { 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=1793803&r1=1793802&r2=1793803&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 Thu May 4 14:00:21 2017 @@ -71,16 +71,19 @@ public class SimpleHttpDistributionTrans private final DistributionEndpoint distributionEndpoint; private final DistributionPackageBuilder packageBuilder; private final DistributionTransportSecretProvider secretProvider; + private final HttpConfiguration httpConfiguration; private final String contextKeyExecutor; public SimpleHttpDistributionTransport(DefaultDistributionLog log, DistributionEndpoint distributionEndpoint, DistributionPackageBuilder packageBuilder, - DistributionTransportSecretProvider secretProvider) { + DistributionTransportSecretProvider secretProvider, + HttpConfiguration httpConfiguration) { this.log = log; this.distributionEndpoint = distributionEndpoint; this.packageBuilder = packageBuilder; this.secretProvider = secretProvider; + this.httpConfiguration = httpConfiguration; this.contextKeyExecutor = EXECUTOR_CONTEXT_KEY_PREFIX + "_" + getHostAndPort(distributionEndpoint.getUri()) + "_" + UUID.randomUUID(); } @@ -98,7 +101,10 @@ public class SimpleHttpDistributionTrans try { Executor executor = getExecutor(distributionContext); - Request req = Request.Post(distributionEndpoint.getUri()).useExpectContinue(); + Request req = Request.Post(distributionEndpoint.getUri()) + .connectTimeout(httpConfiguration.getConnectTimeout()) + .socketTimeout(httpConfiguration.getSocketTimeout()) + .useExpectContinue(); // add the message body digest, see https://tools.ietf.org/html/rfc3230#section-4.3.2 if (distributionPackage instanceof AbstractDistributionPackage) { @@ -147,7 +153,7 @@ public class SimpleHttpDistributionTrans Executor executor = getExecutor(distributionContext); // TODO : add queue parameter - InputStream inputStream = HttpTransportUtils.fetchNextPackage(executor, distributionURI); + InputStream inputStream = HttpTransportUtils.fetchNextPackage(executor, distributionURI, httpConfiguration); if (inputStream == null) { return null; Modified: sling/trunk/contrib/extensions/distribution/core/src/test/java/org/apache/sling/distribution/packaging/impl/exporter/RemoteDistributionPackageExporterTest.java URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/core/src/test/java/org/apache/sling/distribution/packaging/impl/exporter/RemoteDistributionPackageExporterTest.java?rev=1793803&r1=1793802&r2=1793803&view=diff ============================================================================== --- sling/trunk/contrib/extensions/distribution/core/src/test/java/org/apache/sling/distribution/packaging/impl/exporter/RemoteDistributionPackageExporterTest.java (original) +++ sling/trunk/contrib/extensions/distribution/core/src/test/java/org/apache/sling/distribution/packaging/impl/exporter/RemoteDistributionPackageExporterTest.java Thu May 4 14:00:21 2017 @@ -36,6 +36,7 @@ import org.apache.sling.distribution.pac import org.apache.sling.distribution.packaging.DistributionPackageBuilder; import org.apache.sling.distribution.packaging.DistributionPackageProcessor; import org.apache.sling.distribution.transport.DistributionTransportSecretProvider; +import org.apache.sling.distribution.transport.impl.HttpConfiguration; import org.junit.Test; /** @@ -49,7 +50,7 @@ public class RemoteDistributionPackageEx DistributionTransportSecretProvider distributionTransportSecretProvider = mock(DistributionTransportSecretProvider.class); String[] endpoints = new String[0]; RemoteDistributionPackageExporter remotedistributionPackageExporter = new RemoteDistributionPackageExporter(mock(DefaultDistributionLog.class), - packageBuilder, distributionTransportSecretProvider, endpoints, 1); + packageBuilder, distributionTransportSecretProvider, endpoints, 1, new HttpConfiguration(10000)); ResourceResolver resourceResolver = mock(ResourceResolver.class); DistributionRequest distributionRequest = new SimpleDistributionRequest(DistributionRequestType.ADD, "/"); final List<DistributionPackage> distributionPackages = new ArrayList<DistributionPackage>(); @@ -84,7 +85,7 @@ public class RemoteDistributionPackageEx DistributionTransportSecretProvider distributionTransportSecretProvider = mock(DistributionTransportSecretProvider.class); String[] endpoints = new String[0]; RemoteDistributionPackageExporter remotedistributionPackageExporter = new RemoteDistributionPackageExporter(mock(DefaultDistributionLog.class), - packageBuilder, distributionTransportSecretProvider, endpoints, 1); + packageBuilder, distributionTransportSecretProvider, endpoints, 1, new HttpConfiguration(10000)); ResourceResolver resourceResolver = mock(ResourceResolver.class); DistributionPackage distributionPackage = remotedistributionPackageExporter.getPackage(resourceResolver, "123"); Modified: sling/trunk/contrib/extensions/distribution/core/src/test/java/org/apache/sling/distribution/packaging/impl/importer/RemoteDistributionPackageImporterTest.java URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/core/src/test/java/org/apache/sling/distribution/packaging/impl/importer/RemoteDistributionPackageImporterTest.java?rev=1793803&r1=1793802&r2=1793803&view=diff ============================================================================== --- sling/trunk/contrib/extensions/distribution/core/src/test/java/org/apache/sling/distribution/packaging/impl/importer/RemoteDistributionPackageImporterTest.java (original) +++ sling/trunk/contrib/extensions/distribution/core/src/test/java/org/apache/sling/distribution/packaging/impl/importer/RemoteDistributionPackageImporterTest.java Thu May 4 14:00:21 2017 @@ -23,6 +23,7 @@ import org.apache.sling.distribution.log import org.apache.sling.distribution.packaging.DistributionPackage; import org.apache.sling.distribution.packaging.DistributionPackageInfo; import org.apache.sling.distribution.transport.DistributionTransportSecretProvider; +import org.apache.sling.distribution.transport.impl.HttpConfiguration; import org.junit.Test; import java.util.HashMap; @@ -41,7 +42,7 @@ public class RemoteDistributionPackageIm DistributionTransportSecretProvider distributionTransportSecretProvider = mock(DistributionTransportSecretProvider.class); Map<String, String> endpoints = new HashMap<String, String>(); RemoteDistributionPackageImporter remotedistributionPackageImporter = new RemoteDistributionPackageImporter(mock(DefaultDistributionLog.class), - distributionTransportSecretProvider, endpoints); + distributionTransportSecretProvider, endpoints, new HttpConfiguration(10000)); endpoints.put("default","http://endpoint"); ResourceResolver resourceResolver = mock(ResourceResolver.class); DistributionPackage distributionPackage = mock(DistributionPackage.class); Modified: sling/trunk/contrib/extensions/distribution/core/src/test/java/org/apache/sling/distribution/transport/impl/SimpleHttpDistributionTransportTest.java URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/distribution/core/src/test/java/org/apache/sling/distribution/transport/impl/SimpleHttpDistributionTransportTest.java?rev=1793803&r1=1793802&r2=1793803&view=diff ============================================================================== --- sling/trunk/contrib/extensions/distribution/core/src/test/java/org/apache/sling/distribution/transport/impl/SimpleHttpDistributionTransportTest.java (original) +++ sling/trunk/contrib/extensions/distribution/core/src/test/java/org/apache/sling/distribution/transport/impl/SimpleHttpDistributionTransportTest.java Thu May 4 14:00:21 2017 @@ -18,19 +18,6 @@ */ package org.apache.sling.distribution.transport.impl; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertNull; -import static org.mockito.Matchers.any; -import static org.mockito.Matchers.same; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.when; - -import java.io.ByteArrayInputStream; -import java.io.InputStream; -import java.net.URI; -import java.util.HashMap; -import java.util.Map; - import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.StatusLine; @@ -49,6 +36,19 @@ import org.apache.sling.distribution.tra import org.apache.sling.distribution.transport.DistributionTransportSecretProvider; import org.junit.Test; +import java.io.ByteArrayInputStream; +import java.io.InputStream; +import java.net.URI; +import java.util.HashMap; +import java.util.Map; + +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertNull; +import static org.mockito.Matchers.any; +import static org.mockito.Matchers.same; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; + /** * Testcase for {@link SimpleHttpDistributionTransport} */ @@ -70,7 +70,7 @@ public class SimpleHttpDistributionTrans DistributionEndpoint endpoint = new DistributionEndpoint("http://127.0.0.1:8080/some/resource"); DistributionPackageBuilder packageBuilder = mock(DistributionPackageBuilder.class); SimpleHttpDistributionTransport simpleHttpDistributionTransport = new SimpleHttpDistributionTransport(mock(DefaultDistributionLog.class), - endpoint, packageBuilder, secretProvider); + endpoint, packageBuilder, secretProvider, new HttpConfiguration(1000, 1000)); ResourceResolver resourceResolver = mock(ResourceResolver.class); DistributionPackage distributionPackage = mock(DistributionPackage.class); when(distributionPackage.getInfo()).thenReturn(new DistributionPackageInfo("type")); @@ -103,7 +103,7 @@ public class SimpleHttpDistributionTrans DistributionEndpoint endpoint = new DistributionEndpoint("http://127.0.0.1:8080/some/resource"); DistributionPackageBuilder packageBuilder = mock(DistributionPackageBuilder.class); SimpleHttpDistributionTransport simpleHttpDistributionTransport = new SimpleHttpDistributionTransport(mock(DefaultDistributionLog.class), - endpoint, packageBuilder, secretProvider); + endpoint, packageBuilder, secretProvider, new HttpConfiguration(1000, 1000)); ResourceResolver resourceResolver = mock(ResourceResolver.class); DistributionRequest distributionRequest = new SimpleDistributionRequest(DistributionRequestType.ADD, "/"); RemoteDistributionPackage retrievedPackage = simpleHttpDistributionTransport.retrievePackage(resourceResolver, distributionRequest, new DistributionTransportContext()); @@ -138,7 +138,7 @@ public class SimpleHttpDistributionTrans when(distributionPackage.getInfo()).thenReturn(new DistributionPackageInfo("type")); when(packageBuilder.readPackage(any(ResourceResolver.class), any(InputStream.class))).thenReturn(distributionPackage); SimpleHttpDistributionTransport simpleHttpDistributionTransport = new SimpleHttpDistributionTransport(mock(DefaultDistributionLog.class), - endpoint, packageBuilder, secretProvider); + endpoint, packageBuilder, secretProvider, new HttpConfiguration(1000, 1000)); ResourceResolver resourceResolver = mock(ResourceResolver.class); DistributionRequest distributionRequest = new SimpleDistributionRequest(DistributionRequestType.ADD, "/"); DistributionTransportContext distributionContext = mock(DistributionTransportContext.class);