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 2018/05/25 10:05:13 UTC

[sling-org-apache-sling-distribution-core] branch SLING-7555-R1797988 created (now c0827cd)

This is an automated email from the ASF dual-hosted git repository.

mpetria pushed a change to branch SLING-7555-R1797988
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-distribution-core.git.


      at c0827cd  SLING-7555: option to drop ghost packages from and agent exporter

This branch includes the following new commits:

     new c0827cd  SLING-7555: option to drop ghost packages from and agent exporter

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


-- 
To stop receiving notification emails like this one, please contact
mpetria@apache.org.

[sling-org-apache-sling-distribution-core] 01/01: SLING-7555: option to drop ghost packages from and agent exporter

Posted by mp...@apache.org.
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 <mp...@adobe.com>
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
mpetria@apache.org.