[ https://issues.apache.org/jira/browse/SLING-10123?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17290925#comment-17290925 ]
Mohit Arora edited comment on SLING-10123 at 3/1/21, 8:39 PM: -------------------------------------------------------------- [~ashishc], [~marett], should we implement an ExponentialBackoff similar to [0] or would a simple Thread.sleep() for a specified time (linear backoff) be sufficient? If we want to use [0], would it make sense to extract it out into a common bundle which both distribution-journal and distribution-core are importing? Just to add to this, I think exponential backoff might be an overkill here..mainly because we are not going to limit the reattempts. We can, in theory, have infinite attempts to deliver the queue item (for example, the endpoint is unreachable). Which means even if we implement an exponential backoff, we will have to define a limit and then start over again. This could be over-engineering, unless I am missing a very good reason to use exponential backoff here. [0] https://github.com/apache/sling-org-apache-sling-distribution-journal/blob/master/src/main/java/org/apache/sling/distribution/journal/shared/ExponentialBackOff.java was (Author: mohiaror): [~ashishc], [~marett], should we implement an ExponentialBackoff similar to [0] or would a simple Thread.sleep() for a specified time (linear backoff) be sufficient? If we want to use [0], would it make sense to extract it out into a common bundle which both distribution-journal and distribution-core are importing? [0] https://github.com/apache/sling-org-apache-sling-distribution-journal/blob/master/src/main/java/org/apache/sling/distribution/journal/shared/ExponentialBackOff.java > Distribution agent queue processor should implement a backoff in case of > retries for processing an item > ------------------------------------------------------------------------------------------------------- > > Key: SLING-10123 > URL: https://issues.apache.org/jira/browse/SLING-10123 > Project: Sling > Issue Type: Bug > Components: Content Distribution > Affects Versions: Content Distribution Core 0.4.2 > Reporter: Mohit Arora > Priority: Major > Fix For: Content Distribution Core 0.4.6 > > > In case of recoverable exceptions, distribution agent queue processor does > not evict the queue item from the processing queue [0]. Rather, the item is > retried infinitely until either the distribution of the item is successful or > a non-recoverable exception is thrown for the item. However, since there is > "something wrong" because of which an exception is thrown in the first place, > we should add a cool off period before trying to reattempt to distribute the > same item. This can be achieved through a linear or exponential backoff. > cc - [~ashishc] > [0] > https://github.com/apache/sling-org-apache-sling-distribution-core/blob/master/src/main/java/org/apache/sling/distribution/agent/impl/SimpleDistributionAgentQueueProcessor.java#L147-L150 -- This message was sent by Atlassian Jira (v8.3.4#803005)