[
https://issues.apache.org/jira/browse/SLING-7754?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16522146#comment-16522146
]
Marius Petria edited comment on SLING-7754 at 6/25/18 11:12 AM:
----------------------------------------------------------------
[~bdelacretaz] this is a feature for Sling Content Distribution and refers to
offering an implementation of DistributionQueue interface [1] for distribution
usecase. It is not about offering an alternative implementation of Sling Jobs.
SCD uses queues in two ways:
- active queues: for which a queue processor can be defined; typically used for
delivering items in forward distribution usecases.
- passive queues: for which no queue processor is defined; typically used for
storing items (with a FIFO semantics) in reverse distribution usecases
As passive queues are just used for storing items until they are fetched and
removed they do not need the entire machinery of Sling Jobs for
assigning/unassigning jobs to processors and can easily be implemented in
repository without relying on querying. The current Sling Jobs implementation
relies heavily on JCR queries for implementing some of the API (getJobById,
removeJobById, findJobs), and that proved to be both a performance and a
reliability issue for SCD.
[1]
https://github.com/apache/sling-org-apache-sling-distribution-core/blob/master/src/main/java/org/apache/sling/distribution/queue/spi/DistributionQueue.java
was (Author: mpetria):
[~bdelacretaz] this is a feature for Sling Content Distribution and refers to
offering an implementation of DistributionQueue interface [1] for distribution
usecase. It is not about offering an alternative implementation of Sling Jobs.
SCD uses queues in two ways:
- active queues: for which a queue processor can be defined; typically used for
delivering items in forward distribution usecases.
- passive queues: for which no queue processor is defined; typically used for
storing items (with a FIFO semantics) in reverse distribution usecases
As passive queues ar just used for storing until items are pulled and removed
they do not need the entire machinery of Sling Jobs and can easily be
implemented in repository without relying on querying. The current Sling Jobs
implementation relies heavily on JCR queries for implementing some of the API
(getJobById, removeJobById, findJobs), and that proved to be both a performance
and a reliability issue for SCD.
[1]
https://github.com/apache/sling-org-apache-sling-distribution-core/blob/master/src/main/java/org/apache/sling/distribution/queue/spi/DistributionQueue.java
> Implement passive DistributionQueue in JCR
> ------------------------------------------
>
> Key: SLING-7754
> URL: https://issues.apache.org/jira/browse/SLING-7754
> Project: Sling
> Issue Type: Improvement
> Components: Content Distribution
> Reporter: Marius Petria
> Assignee: Marius Petria
> Priority: Major
>
> In order to minimize dependency on Sling Jobs and improve performance we
> should offer an implementation passive queues in JCR.
> Passive queues are distribution queues [1] for which no queue processor is
> defined. They are only used to store items and do not need rebalancing
> between instances. They just need to be stored and fetched (FIFO semantics)
> and this can easily be implemented in JCR with a simpler implementation that
> does not use querying (querying for jobs is problematic like OAK-7495 shows).
> [1]
> https://github.com/apache/sling-org-apache-sling-distribution-core/blob/master/src/main/java/org/apache/sling/distribution/queue/spi/DistributionQueue.java
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)