Ashish Chopra created SLING-8854:
------------------------------------

             Summary: In-file and In-memory queue-providers for Forward 
Distribution report incorrect value for processing "Attempts"
                 Key: SLING-8854
                 URL: https://issues.apache.org/jira/browse/SLING-8854
             Project: Sling
          Issue Type: Bug
          Components: Content Distribution
    Affects Versions: Content Distribution Core 0.4.0
            Reporter: Ashish Chopra


{{ForwardDistributionAgentFactory}} allows specifying "In-Memory" and "In-File" 
queue-providers [0]. Both these implementations are provided by 
{{SimpleDistributionQueue}} [1].

While responding to a queue-processing request, the head of the queue is 
fetched to create a {{DistributionQueueEntry}}, which encapsulates a 
{{DistributionQueueItemStatus}}. While retrieving the queue-head-entry, the 
number-of-attempts are also incremented by 1, implying _one more_ 
processing-attempt to have happened on a given queue-item. [2]

The trouble arises from the fact that {{SimpleDistributionQueue#getHead}} ends 
up being called from at least three other places:
# Queue status Health Check [3], which is a periodic job
# UI (via {{ExtendedDistributionServiceResourceProvider}}) [4]
# Distribution Queue status MBean [5]

Out of these, #1 is most troublesome - because of its periodic nature, the 
number of Attempts for a queue-item that's being processed (or, is blocked) 
will keep on increasing without corresponding dequeue-attempts.
Due to #2, everytime the queue status is delivered to the UI, the attempt would 
again increase. Similar would be the case of MBean invocations.

This needs to be addressed. Notably, "Sling Jobs" based queue doesn't suffer 
from this issue because it relies on retry-counts as maintained by Sling Job 
Execution Engine.

[0] 
https://github.com/apache/sling-org-apache-sling-distribution-core/blob/deb3d2ae33c4f4678c8503091a9fffdbb141e569/src/main/java/org/apache/sling/distribution/agent/impl/ForwardDistributionAgentFactory.java#L258-L262
[1] 
https://github.com/apache/sling-org-apache-sling-distribution-core/blob/deb3d2ae33c4f4678c8503091a9fffdbb141e569/src/main/java/org/apache/sling/distribution/queue/impl/simple/SimpleDistributionQueue.java
[2] 
https://github.com/apache/sling-org-apache-sling-distribution-core/blob/deb3d2ae33c4f4678c8503091a9fffdbb141e569/src/main/java/org/apache/sling/distribution/queue/impl/simple/SimpleDistributionQueue.java#L110-L112
[3] 
https://github.com/apache/sling-org-apache-sling-distribution-core/blob/deb3d2ae33c4f4678c8503091a9fffdbb141e569/src/main/java/org/apache/sling/distribution/monitor/DistributionQueueHealthCheck.java#L113
[4] 
https://github.com/apache/sling-org-apache-sling-distribution-core/blob/deb3d2ae33c4f4678c8503091a9fffdbb141e569/src/main/java/org/apache/sling/distribution/resources/impl/ExtendedDistributionServiceResourceProvider.java#L158
[5] 
https://github.com/apache/sling-org-apache-sling-distribution-core/blob/deb3d2ae33c4f4678c8503091a9fffdbb141e569/src/main/java/org/apache/sling/distribution/monitor/impl/DistributionQueueMBeanImpl.java#L62-L91



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

Reply via email to