[
https://issues.apache.org/jira/browse/SLING-8407?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16837230#comment-16837230
]
Thomas Mueller commented on SLING-8407:
---------------------------------------
About adding a new API: I tried changing
org/apache/sling/distribution/queue/spi/DistributionQueue.java in
sling-org-apache-sling-distribution-core, add a method "boolean
isReadyForQueries()". That would require a major version increase for
org.apache.sling.distribution.queue.spi, would that be OK? We could use an
existing API, for example DistributionQueue.getStatus() which returns a
DistributionQueueStatus which returns a DistributionQueueState. So we could set
the state to paused if the index isn't available. That would require running a
query, so would also change behavior there. The health check could then check
if it's paused, to avoid calling JobManager getJobs internally. A similar
change for the replication queue would be needed, where also a major version
increase is needed, or the existing method isPaused can be used (which is also
a small behavior change, but less so than for DistributionQueue).
In my view the proposed solution is quite a bit simpler.
As for the bug [~egli] found, I will create a new issue.
> JobManagerImpl.findJobs should prevent traversal
> ------------------------------------------------
>
> Key: SLING-8407
> URL: https://issues.apache.org/jira/browse/SLING-8407
> Project: Sling
> Issue Type: Improvement
> Components: Event
> Reporter: Thomas Mueller
> Priority: Major
>
> The method
> [JobManagerImpl.findJobs|https://github.com/apache/sling-org-apache-sling-event/blob/master/src/main/java/org/apache/sling/event/impl/jobs/JobManagerImpl.java#L373]
> runs a JCR query to find all jobs for a topic.
> It is possible that such a query is running while the repository isn't
> initialized yet, meaning while the index isn't available yet. What is
> happening in this case is that the query is traversing all nodes below that
> path, triggering a warning that the query doesn't use an index. It is
> sometimes happening when a health check is running before the repository is
> initialized (ReplicationQueueHealthCheck and DistributionQueueHealthCheck).
> It doesn't make sense that the query traverses the nodes. It should use an
> index. If the index isn't available yet, it should fail. Therefore, the query
> should use "option(traversal fail)". That would result in an exception that
> can be caught. I will log a related issue to change the health checks to
> process this exception and return HEALTH_CHECK_ERROR for this case.
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)