I am using RavenDB in In-Memory mode for unit testing. My queries are backed by static indexes. I am not using WaitForNonStaleResults()
API (nor do I want to).
Typical workflow for a test is:
- Initialise RavenDB in In-Memory mode
- Integrate indexes using
IndexCreation.CreateIndexes(Assembly, IDocumentStore)
- Insert test data (for verifying query behaviour)
- Run query
- Verify query output
I have noticed steps 1-3 happen so quickly, that static indexes don't have time to get updated before step 4 - therefore the indexes are stale.
I have created a quick work-around for this. After step 3, I execute:
while (documentStore.DocumentDatabase.Statistics.StaleIndexes.Length != 0)
Thread.Sleep(10);
This feels cumbersome. What I would like to know is:
- Is it normal for indexes to be stale when running RavenDB in In-Memory mode?
- Is there a better way to avoid stale indexes during testing?