This is an automated email from the ASF dual-hosted git repository. mpetria pushed a commit to branch SLING-7555-R1797988 in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-distribution-core.git
commit c0827cd63c0404bf4f9fa4f7b696ca31e23b1668 Author: Marius Petria <[email protected]> AuthorDate: Fri Apr 27 14:25:22 2018 +0300 SLING-7555: option to drop ghost packages from and agent exporter --- .../impl/exporter/AgentDistributionPackageExporter.java | 11 +++++++++-- .../exporter/AgentDistributionPackageExporterFactory.java | 11 ++++++++++- .../queue/impl/jobhandling/JobHandlingDistributionQueue.java | 7 +++++-- .../impl/exporter/AgentDistributionPackageExporterTest.java | 2 +- 4 files changed, 25 insertions(+), 6 deletions(-) diff --git a/src/main/java/org/apache/sling/distribution/packaging/impl/exporter/AgentDistributionPackageExporter.java b/src/main/java/org/apache/sling/distribution/packaging/impl/exporter/AgentDistributionPackageExporter.java index 160d0ee..92e3fe1 100644 --- a/src/main/java/org/apache/sling/distribution/packaging/impl/exporter/AgentDistributionPackageExporter.java +++ b/src/main/java/org/apache/sling/distribution/packaging/impl/exporter/AgentDistributionPackageExporter.java @@ -50,15 +50,17 @@ public class AgentDistributionPackageExporter implements DistributionPackageExpo private final Logger log = LoggerFactory.getLogger(getClass()); private final DistributionPackageBuilderProvider packageBuilderProvider; private final String name; + private boolean dropInvalidItems; private final static String PACKAGE_TYPE = "agentexporter"; private DistributionAgent agent; private String queueName; - public AgentDistributionPackageExporter(String queueName, DistributionAgent agent, DistributionPackageBuilderProvider packageBuilderProvider, String name) { + public AgentDistributionPackageExporter(String queueName, DistributionAgent agent, DistributionPackageBuilderProvider packageBuilderProvider, String name, boolean dropInvalidItems) { this.packageBuilderProvider = packageBuilderProvider; this.name = name; + this.dropInvalidItems = dropInvalidItems; if (agent == null || packageBuilderProvider == null) { throw new IllegalArgumentException("Agent and package builder are required"); @@ -99,7 +101,12 @@ public class AgentDistributionPackageExporter implements DistributionPackageExpo packageProcessor.process(new AgentDistributionPackage(distributionPackage, queue, entry.getId())); } else { - log.warn("cannot get package {}", info); + if (dropInvalidItems) { + queue.remove(entry.getId()); + log.warn("ghost package: cannot get package {} dropping from queue", info); + } else { + log.warn("ghost package: cannot get package {} keeping in queue", info); + } } } else { log.warn("cannot find package builder with type {}", info.getType()); diff --git a/src/main/java/org/apache/sling/distribution/packaging/impl/exporter/AgentDistributionPackageExporterFactory.java b/src/main/java/org/apache/sling/distribution/packaging/impl/exporter/AgentDistributionPackageExporterFactory.java index 73b9b1f..5368e92 100644 --- a/src/main/java/org/apache/sling/distribution/packaging/impl/exporter/AgentDistributionPackageExporterFactory.java +++ b/src/main/java/org/apache/sling/distribution/packaging/impl/exporter/AgentDistributionPackageExporterFactory.java @@ -34,6 +34,7 @@ import org.apache.sling.distribution.DistributionRequest; import org.apache.sling.distribution.agent.DistributionAgent; import org.apache.sling.distribution.common.DistributionException; import org.apache.sling.distribution.component.impl.DistributionComponentConstants; +import org.apache.sling.distribution.component.impl.SettingsUtils; import org.apache.sling.distribution.packaging.DistributionPackage; import org.apache.sling.distribution.packaging.DistributionPackageBuilderProvider; import org.apache.sling.distribution.packaging.DistributionPackageExporter; @@ -61,10 +62,14 @@ public class AgentDistributionPackageExporterFactory implements DistributionPack @Property(label = "Queue", description = "The name of the queue from which the packages should be exported.") private static final String QUEUE_NAME = "queue"; + @Property(label = "Drop invalid queue items", description = "Remove invalid items from the queue.", boolValue = false) + private static final String DROP_INVALID_QUEUE_ITEMS = "drop.invalid.items"; + @Property(name = "agent.target", label = "The target reference for the DistributionAgent that will be used to export packages.") @Reference(name = "agent") private DistributionAgent agent; + @Reference private DistributionPackageBuilderProvider packageBuilderProvider; @@ -75,10 +80,14 @@ public class AgentDistributionPackageExporterFactory implements DistributionPack public void activate(Map<String, Object> config) throws Exception { String queueName = PropertiesUtil.toString(config.get(QUEUE_NAME), DistributionQueueDispatchingStrategy.DEFAULT_QUEUE_NAME); + queueName = SettingsUtils.removeEmptyEntry(queueName); + queueName = queueName == null ? DistributionQueueDispatchingStrategy.DEFAULT_QUEUE_NAME : queueName; + String name = PropertiesUtil.toString(config.get(NAME), ""); + boolean dropInvalidItems = PropertiesUtil.toBoolean(config.get(DROP_INVALID_QUEUE_ITEMS), false); - packageExporter = new AgentDistributionPackageExporter(queueName, agent, packageBuilderProvider, name); + packageExporter = new AgentDistributionPackageExporter(queueName, agent, packageBuilderProvider, name, dropInvalidItems); } public void exportPackages(@Nonnull ResourceResolver resourceResolver, @Nonnull DistributionRequest distributionRequest, @Nonnull DistributionPackageProcessor packageProcessor) throws DistributionException { diff --git a/src/main/java/org/apache/sling/distribution/queue/impl/jobhandling/JobHandlingDistributionQueue.java b/src/main/java/org/apache/sling/distribution/queue/impl/jobhandling/JobHandlingDistributionQueue.java index 1c62e57..24a740a 100644 --- a/src/main/java/org/apache/sling/distribution/queue/impl/jobhandling/JobHandlingDistributionQueue.java +++ b/src/main/java/org/apache/sling/distribution/queue/impl/jobhandling/JobHandlingDistributionQueue.java @@ -98,8 +98,8 @@ public class JobHandlingDistributionQueue implements DistributionQueue { List<Job> jobs = getJobs(0, 1); if (jobs.size() > 0) { Job firstItem = jobs.get(0); - log.debug("first item in the queue is {}, retried {} times", firstItem.getId(), firstItem.getRetryCount()); - return firstItem; + log.debug("first item in the queue is {}, retried {} times, state {}", + new Object[]{ firstItem.getId(), firstItem.getRetryCount(), firstItem.getJobState() }); return firstItem; } return null; } @@ -110,6 +110,9 @@ public class JobHandlingDistributionQueue implements DistributionQueue { if (job == null) { log.warn("item with id {} cannot be found", itemId); + } else { + log.debug("retrieved item with id {}, retried {} times, state {}", + new Object[]{ job.getId(), job.getRetryCount(), job.getJobState() }); } return job; diff --git a/src/test/java/org/apache/sling/distribution/packaging/impl/exporter/AgentDistributionPackageExporterTest.java b/src/test/java/org/apache/sling/distribution/packaging/impl/exporter/AgentDistributionPackageExporterTest.java index e6351c8..638816f 100644 --- a/src/test/java/org/apache/sling/distribution/packaging/impl/exporter/AgentDistributionPackageExporterTest.java +++ b/src/test/java/org/apache/sling/distribution/packaging/impl/exporter/AgentDistributionPackageExporterTest.java @@ -42,7 +42,7 @@ public class AgentDistributionPackageExporterTest { @Test public void testTestExport() throws Exception { AgentDistributionPackageExporter distributionPackageExporter = new AgentDistributionPackageExporter(null, - mock(DistributionAgent.class), mock(DistributionPackageBuilderProvider.class), null); + mock(DistributionAgent.class), mock(DistributionPackageBuilderProvider.class), null, true); ResourceResolver resourceResolver = mock(ResourceResolver.class); String[] args = new String[0]; // vargarg doesn't match and causes compiler warning DistributionRequest distributionRequest = new SimpleDistributionRequest(DistributionRequestType.TEST, args); -- To stop receiving notification emails like this one, please contact [email protected].
