[ 
https://issues.apache.org/jira/browse/SLING-9016?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Ashish Chopra updated SLING-9016:
---------------------------------
    Description: 
We already have an event corresponding to the successful distribution of a 
package [0].

In the Distribution Core impl, this event is (correctly) generated when the 
package is successfully distributed [1]. However, if the distribution agent has 
a valid error-strategy associated with it and if the attempts to distribute 
them exceed a fixed number of retries, the packages are moved _silently_ to 
error-queue [2].

I propose that this asymmetry be addressed.

Since {{DistributionEventTopics}} is a {{ProviderType}}, it should be possible 
to introduce another constant (which queue-processors in Distribution Core, as 
well as any custom ones) can use to identify failed distribution-requests [3].
Distribution Core can be further enhanced to create this event when it 
re-enqueues the queue-item that has exceeded its retries in the error-queue [4].

[0] 
https://github.com/apache/sling-org-apache-sling-distribution-api/blob/ff4c3ae5b7129ba7b1f4f59d35edf93bf6e3d63f/src/main/java/org/apache/sling/distribution/event/DistributionEventTopics.java#L44
[1] 
https://github.com/apache/sling-org-apache-sling-distribution-core/blob/537bb57af821f21537cf4a24ad7d2347c6a5dae1/src/main/java/org/apache/sling/distribution/agent/impl/SimpleDistributionAgentQueueProcessor.java#L137-L138
[2] 
https://github.com/apache/sling-org-apache-sling-distribution-core/blob/537bb57af821f21537cf4a24ad7d2347c6a5dae1/src/main/java/org/apache/sling/distribution/agent/impl/SimpleDistributionAgentQueueProcessor.java#L158-L160
[3]
{noformat}
diff --git 
a/src/main/java/org/apache/sling/distribution/event/DistributionEventTopics.java
 
b/src/main/java/org/apache/sling/distribution/event/DistributionEventTopics.java
index 8a75dda..2be0358 100644
--- 
a/src/main/java/org/apache/sling/distribution/event/DistributionEventTopics.java
+++ 
b/src/main/java/org/apache/sling/distribution/event/DistributionEventTopics.java
@@ -43,6 +43,10 @@ public interface DistributionEventTopics {
      */
     String AGENT_PACKAGE_DISTRIBUTED = EVENT_BASE + 
"/agent/package/distributed";

+    /**
+     * event for package errored-out
+     */
+    String AGENT_PACKAGE_ERRORED = EVENT_BASE + "/agent/package/errored";

     /**
      * event for package imported
{noformat}
[4]
{noformat}
diff --git 
a/src/main/java/org/apache/sling/distribution/agent/impl/SimpleDistributionAgentQueueProcessor.java
 
b/src/main/java/org/apache/sling/distribution/agent/impl/SimpleDistributionAgentQueueProcessor.java
index 1a04fa7..eba47e9 100644
--- 
a/src/main/java/org/apache/sling/distribution/agent/impl/SimpleDistributionAgentQueueProcessor.java
+++ 
b/src/main/java/org/apache/sling/distribution/agent/impl/SimpleDistributionAgentQueueProcessor.java
@@ -157,6 +157,8 @@ class SimpleDistributionAgentQueueProcessor implements 
DistributionQueueProcesso

                     if (errorQueueStrategy != null && 
queueItemStatus.getAttempts() > retryAttempts) {
                         removeItemFromQueue = 
reEnqueuePackage(distributionPackage);
+                        
distributionEventFactory.generatePackageEvent(DistributionEventTopics.AGENT_PACKAGE_ERRORED,
+                                DistributionComponentKind.AGENT, agentName, 
distributionPackage.getInfo());
                         distributionLog.info("[{}] PACKAGE-QUEUED {}: 
distribution package {} was enqueued to an error queue", queueName, requestId, 
distributionPackage.getId());
                     }
                 }

{noformat}

  was:
We already have an event corresponding to the successful distribution of a 
package [0].

In the Distribution Core impl, this event is (correctly) generated when the 
package is successfully distributed [1]. However, if the distribution agent has 
a valid error-strategy associated with it and if the attempts to distribute 
them exceed a fixed number of retries, the packages are moved _silently_ to 
error-queue [2].

I propose that this asymmetry be addressed.

Since {{DistributionEventTopics}} is a {{ProviderType}}, it should be possible 
to introduce another constant (which queue-processors in Distribution Core, as 
well as any custom ones) can use to identify failed distribution-requests [3].
Distribution Core can be further enhanced to create this event when it 
re-enqueues the queue-item that has exceeded its retries in the error-queue [4].

[0] 
https://github.com/apache/sling-org-apache-sling-distribution-api/blob/ff4c3ae5b7129ba7b1f4f59d35edf93bf6e3d63f/src/main/java/org/apache/sling/distribution/event/DistributionEventTopics.java#L44
[1] 
https://github.com/apache/sling-org-apache-sling-distribution-core/blob/537bb57af821f21537cf4a24ad7d2347c6a5dae1/src/main/java/org/apache/sling/distribution/agent/impl/SimpleDistributionAgentQueueProcessor.java#L137-L138
[2] 
https://github.com/apache/sling-org-apache-sling-distribution-core/blob/537bb57af821f21537cf4a24ad7d2347c6a5dae1/src/main/java/org/apache/sling/distribution/agent/impl/SimpleDistributionAgentQueueProcessor.java#L158-L160
[3]
{noformat}
diff --git 
a/src/main/java/org/apache/sling/distribution/event/DistributionEventTopics.java
 
b/src/main/java/org/apache/sling/distribution/event/DistributionEventTopics.java
index 8a75dda..2be0358 100644
--- 
a/src/main/java/org/apache/sling/distribution/event/DistributionEventTopics.java
+++ 
b/src/main/java/org/apache/sling/distribution/event/DistributionEventTopics.java
@@ -43,6 +43,10 @@ public interface DistributionEventTopics {
      */
     String AGENT_PACKAGE_DISTRIBUTED = EVENT_BASE + 
"/agent/package/distributed";

+    /**
+     * event for package errored-out
+     */
+    String AGENT_PACKAGE_ERRORED = EVENT_BASE + "/importer/package/errored";

     /**
      * event for package imported
{noformat}
[4]
{noformat}
diff --git 
a/src/main/java/org/apache/sling/distribution/agent/impl/SimpleDistributionAgentQueueProcessor.java
 
b/src/main/java/org/apache/sling/distribution/agent/impl/SimpleDistributionAgentQueueProcessor.java
index 1a04fa7..eba47e9 100644
--- 
a/src/main/java/org/apache/sling/distribution/agent/impl/SimpleDistributionAgentQueueProcessor.java
+++ 
b/src/main/java/org/apache/sling/distribution/agent/impl/SimpleDistributionAgentQueueProcessor.java
@@ -157,6 +157,8 @@ class SimpleDistributionAgentQueueProcessor implements 
DistributionQueueProcesso

                     if (errorQueueStrategy != null && 
queueItemStatus.getAttempts() > retryAttempts) {
                         removeItemFromQueue = 
reEnqueuePackage(distributionPackage);
+                        
distributionEventFactory.generatePackageEvent(DistributionEventTopics.AGENT_PACKAGE_ERRORED,
+                                DistributionComponentKind.AGENT, agentName, 
distributionPackage.getInfo());
                         distributionLog.info("[{}] PACKAGE-QUEUED {}: 
distribution package {} was enqueued to an error queue", queueName, requestId, 
distributionPackage.getId());
                     }
                 }

{noformat}


> In case of a valid error-strategy, a Distribution Event should be generated 
> when the package errors out
> -------------------------------------------------------------------------------------------------------
>
>                 Key: SLING-9016
>                 URL: https://issues.apache.org/jira/browse/SLING-9016
>             Project: Sling
>          Issue Type: Improvement
>          Components: Content Distribution
>            Reporter: Ashish Chopra
>            Priority: Major
>             Fix For: Content Distribution Core 0.4.2, Content Distribution 
> API 0.4.0
>
>
> We already have an event corresponding to the successful distribution of a 
> package [0].
> In the Distribution Core impl, this event is (correctly) generated when the 
> package is successfully distributed [1]. However, if the distribution agent 
> has a valid error-strategy associated with it and if the attempts to 
> distribute them exceed a fixed number of retries, the packages are moved 
> _silently_ to error-queue [2].
> I propose that this asymmetry be addressed.
> Since {{DistributionEventTopics}} is a {{ProviderType}}, it should be 
> possible to introduce another constant (which queue-processors in 
> Distribution Core, as well as any custom ones) can use to identify failed 
> distribution-requests [3].
> Distribution Core can be further enhanced to create this event when it 
> re-enqueues the queue-item that has exceeded its retries in the error-queue 
> [4].
> [0] 
> https://github.com/apache/sling-org-apache-sling-distribution-api/blob/ff4c3ae5b7129ba7b1f4f59d35edf93bf6e3d63f/src/main/java/org/apache/sling/distribution/event/DistributionEventTopics.java#L44
> [1] 
> https://github.com/apache/sling-org-apache-sling-distribution-core/blob/537bb57af821f21537cf4a24ad7d2347c6a5dae1/src/main/java/org/apache/sling/distribution/agent/impl/SimpleDistributionAgentQueueProcessor.java#L137-L138
> [2] 
> https://github.com/apache/sling-org-apache-sling-distribution-core/blob/537bb57af821f21537cf4a24ad7d2347c6a5dae1/src/main/java/org/apache/sling/distribution/agent/impl/SimpleDistributionAgentQueueProcessor.java#L158-L160
> [3]
> {noformat}
> diff --git 
> a/src/main/java/org/apache/sling/distribution/event/DistributionEventTopics.java
>  
> b/src/main/java/org/apache/sling/distribution/event/DistributionEventTopics.java
> index 8a75dda..2be0358 100644
> --- 
> a/src/main/java/org/apache/sling/distribution/event/DistributionEventTopics.java
> +++ 
> b/src/main/java/org/apache/sling/distribution/event/DistributionEventTopics.java
> @@ -43,6 +43,10 @@ public interface DistributionEventTopics {
>       */
>      String AGENT_PACKAGE_DISTRIBUTED = EVENT_BASE + 
> "/agent/package/distributed";
> +    /**
> +     * event for package errored-out
> +     */
> +    String AGENT_PACKAGE_ERRORED = EVENT_BASE + "/agent/package/errored";
>      /**
>       * event for package imported
> {noformat}
> [4]
> {noformat}
> diff --git 
> a/src/main/java/org/apache/sling/distribution/agent/impl/SimpleDistributionAgentQueueProcessor.java
>  
> b/src/main/java/org/apache/sling/distribution/agent/impl/SimpleDistributionAgentQueueProcessor.java
> index 1a04fa7..eba47e9 100644
> --- 
> a/src/main/java/org/apache/sling/distribution/agent/impl/SimpleDistributionAgentQueueProcessor.java
> +++ 
> b/src/main/java/org/apache/sling/distribution/agent/impl/SimpleDistributionAgentQueueProcessor.java
> @@ -157,6 +157,8 @@ class SimpleDistributionAgentQueueProcessor implements 
> DistributionQueueProcesso
>                      if (errorQueueStrategy != null && 
> queueItemStatus.getAttempts() > retryAttempts) {
>                          removeItemFromQueue = 
> reEnqueuePackage(distributionPackage);
> +                        
> distributionEventFactory.generatePackageEvent(DistributionEventTopics.AGENT_PACKAGE_ERRORED,
> +                                DistributionComponentKind.AGENT, agentName, 
> distributionPackage.getInfo());
>                          distributionLog.info("[{}] PACKAGE-QUEUED {}: 
> distribution package {} was enqueued to an error queue", queueName, 
> requestId, distributionPackage.getId());
>                      }
>                  }
> {noformat}



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to