[
https://issues.apache.org/jira/browse/OAK-7256?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Thomas Mueller updated OAK-7256:
--------------------------------
Fix Version/s: (was: 1.14.0)
> Query: option to wait for indexes to be updated
> -----------------------------------------------
>
> Key: OAK-7256
> URL: https://issues.apache.org/jira/browse/OAK-7256
> Project: Jackrabbit Oak
> Issue Type: Improvement
> Components: query
> Reporter: Thomas Mueller
> Assignee: Thomas Mueller
> Priority: Minor
>
> Sometimes (rarely, but still) queries should include the very latest changes,
> even if the index is updated asynchronously. For example when running unit
> test: data is added, and then a query is run to check if the data is there.
> The problem with asynchronous indexes is, you don't know exactly how long you
> have to wait. Often the index is updated quickly, and sometimes it takes a
> few seconds.
> What about extending the query syntax as follows:
> Wait for all indexes (no matter which index is used for this query) - this
> would be used rarely, just for testing:
> {noformat}
> /jcr:root/*
> option(wait for all indexes timeout 60)
> {noformat}
> Wait for just those indexes (well, usually it's just one, but sometimes it's
> multiple) that are needed for the given query. This query could also be used
> in an application that strictly needs the very latest results, even for
> fulltext queries. The "timeout" would mean "wait at most 10 seconds, and if
> not up-to-date then throw an exeption", while "max 10" would mean "wait at
> most 10 seconds, but still run the query in any case".
> {noformat}
> /jcr:root/content//*[jcr:contains(., 'hello')]
> option(wait for indexes max 10)
> {noformat}
> The query would wait, and once the indexes are up-to-date, return the
> requested result.
> So the syntax is (both SQL-2 and XPath):
> {noformat}
> <query> option(wait for [all] indexes
> { max | timeout } <numberOfSeconds>
> [, <otherOptions> ] )
> {noformat}
> So other options can also be used (option traversal fail,...).
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)