Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Fixed
-
Content Distribution Core 0.4.0
-
None
Description
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
Attachments
Attachments
Issue Links
- is related to
-
SLING-8945 ActiveResourceQueue doesn't provide cluster-consistent processing-attempts view
- Closed
- relates to
-
SLING-8853 Develop an Active variant of ResourceQueue and make it available as possible queue.provider for ForwardDistributionAgentFactory
- Closed
- links to