[
https://issues.apache.org/jira/browse/OAK-8343?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16849434#comment-16849434
]
Thomas Mueller commented on OAK-8343:
-------------------------------------
I should probably replace ":async" with the constant (make it public). But
maybe there is an alternative.
Starting the async indexing earlier might be problematic in a clustered
environment (I guess that async indexing requires that cluster topology is
known / this service started).
> Allow queries to be delayed until an index is available
> -------------------------------------------------------
>
> Key: OAK-8343
> URL: https://issues.apache.org/jira/browse/OAK-8343
> Project: Jackrabbit Oak
> Issue Type: Improvement
> Components: lucene, query
> Reporter: Thomas Mueller
> Assignee: Thomas Mueller
> Priority: Major
> Fix For: 1.14.0
>
> Attachments: OAK-8343-b.patch, OAK-8343.patch
>
>
> Currently, indexes are built asynchronously. That is, if an index definition
> is added, the index is eventually built, but it's quite hard to say when it
> is ready for queries. This can be specially a problem right after the initial
> repository initialization, or after an upgrade.
> In theory, system startup could be delayed until all indexes are ready (e.g.
> set the "reindex" flag for important indexes, and at startup, wait until the
> "reindex" flag is set to "false"). However, doing that would block threads
> that _don't_ need an index. It would be better to only block threads that
> actually do run queries. That would make startup deterministic, without
> delaying other threads unnecessarily.
> To solve the problem, we can add a property "waitForIndex" in the index
> definition (just Lucene indexes is fine for now, as those are the important
> asynchronous ones). If set, then queries that potentially use those indexes
> are delayed, until the indexes are ready for sure. Reindex would need to
> remove that property (the same as it removes e.g. refresh or sets reindex to
> false). For added security, queries are only blocked as long as "reindex" is
> also set to true (this ensures that waitForIndex is removed eventually), and
> waiting should time out after 2 minutes, to ensure the feature doesn't block
> startup forever if indexing fails for some reason.
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)