mpetria closed pull request #8:  SLING-7555: option to drop ghost packages from 
and agent exporter
URL: https://github.com/apache/sling-org-apache-sling-distribution-core/pull/8
 
 
   

This is a PR merged from a forked repository.
As GitHub hides the original diff on merge, it is displayed below for
the sake of provenance:

As this is a foreign pull request (from a fork), the diff is supplied
below (as it won't show otherwise due to GitHub magic):

diff --git a/pom.xml b/pom.xml
index 123393b..8e19597 100644
--- a/pom.xml
+++ b/pom.xml
@@ -71,13 +71,7 @@
                         <Export-Package>
                             org.apache.sling.distribution.util,
                             org.apache.sling.distribution.common,
-                            org.apache.sling.distribution.serialization,
-                            org.apache.sling.distribution.queue.spi,
-                            org.apache.sling.distribution.queue,
-                            org.apache.sling.distribution.log.spi,
-                            org.apache.sling.distribution.agent,
-                            org.apache.sling.distribution.agent.spi,
-                            org.apache.sling.distribution.packaging
+                            org.apache.sling.distribution.serialization
                         </Export-Package>
                         <Import-Package>
                             org.apache.http.nio.*;resolution:=optional,
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 63744a0..6662b13 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 @@
     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 void exportPackages(@Nonnull ResourceResolver 
resourceResolver, @Nonnull
 
                         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 1d6fd01..8671c0d 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.agent.spi.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.impl.DistributionPackageBuilderProvider;
 import 
org.apache.sling.distribution.packaging.impl.DistributionPackageExporter;
@@ -61,10 +62,14 @@
     @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 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 9a7ee28..e2b383e 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 @@ private Job getFirstJob() {
         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 @@ private Job getJob(String itemId) {
 
         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 ff811a8..32699aa 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 @@
     @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);


 

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
[email protected]


With regards,
Apache Git Services

Reply via email to