You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-issues@jackrabbit.apache.org by "Thomas Mueller (JIRA)" <ji...@apache.org> on 2018/03/08 14:47:03 UTC

[jira] [Assigned] (OAK-7256) Query: option to wait for indexes to be updated

     [ https://issues.apache.org/jira/browse/OAK-7256?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Thomas Mueller reassigned OAK-7256:
-----------------------------------

    Assignee: Thomas Mueller

> 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
>             Fix For: 1.10
>
>
> 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)