While all index operations on SOLR are asynchronous, delete are always handled synchronously. This can result in hard to reproduced side effects:
- Create a Object A with a Child B
- Delete A and it may be still in SOLR index
Here is why:
- During the deleteion of A, first B has to be deleted (Index entry for B is deleted).
- This results in an update for A, as we remove B from the structure. An index update is therefor scheduled for A.
- After B has been deleted, A can be deleted, too.
- A is removed from the index.
- Updated version of A is addded to index.
We need to process deleted asynchronously to and ensure that no other index operation fired before is pending. Furthermore all future index operations should wait for the delete to be handled.