For huge Oak repos it will be essential to re-index some or all indexes in case they go out of sync in a non-blocking way (i.e. the repo is still operation while the re-indexing takes place).
For an asynchronous index this should not be much of a problem. One could drop it and recreate (as an added benefit it might be nice if the user could simply add a property "reindex" to the index definition node to trigger this).
For synchronous indexes, I suggest the mechanism creates an asynchronous index behind the scenes first and once it has caught up
- blocks writes
- removes the existing synchronous index
- moves asynchronous index in its place and makes it synchronous