Thomas Mueller created OAK-6892:
-----------------------------------
Summary: Query: ability to "nicely" traverse
Key: OAK-6892
URL: https://issues.apache.org/jira/browse/OAK-6892
Project: Jackrabbit Oak
Issue Type: New Feature
Components: query
Reporter: Thomas Mueller
Assignee: Thomas Mueller
Priority: Normal
Fix For: 1.9.0
Currently, queries that traverse many nodes log a warning, or can even fail (if
configured). This is to ensure system resources are not blocked (CPU, I/O,
memory).
But there are cases where it doesn't make sense to create an index, but
traverse (a certain path structure, or sometimes even the whole repository).
For example, finding a text with "like '%xxx%'". The problem isn't that it's
slow; the problem is that it's blocking / slowing down other users. Another
example is during migration, where the alternative is to create an index (which
also traverses the repository).
One option is to allow such queries to run, but throttle them. We could add the
hint {{option(traversal throttle)}} to do that. Throttle means: don't use up
all I/O, but yield to other tasks depending on config settings (during
migration, yield is not needed). As a rule of thumb, the longer the query runs,
the more should it yield (up to some value).
It would be good to allow stopping such queries, and get progress information.
The easiest solution might be over JMX, and a more advanced solution is using
new API (like, using an interface QueryTraversalObserver, and have our
QueryResult implement that interface).
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)