Перешли это к RavenDB usergroup и имеют работающее решение.
Это нормально для индексов, которые устаревают при работе RavenDB в режиме In-Memory?
Да.Индекс - это индекс.
Есть ли лучший способ избежать устаревших индексов во время тестирования?
Да.Настройте глобальные соглашения при инициализации хранилища документов:
var store = new EmbeddableDocumentStore();
store.RunInMemory = true;
store.Conventions = new DocumentConvention
{
DefaultQueryingConsistency = ConsistencyOptions.QueryYourWrites
};
store.Initialize();
Примечание: ConsistencyOptions.QueryYourWrites
не работает с индексами Map / Reduce, то есть с разделами Reduce => ...
.Для этого вы должны использовать Customize(x => x.WaitForNonStale...())
при запросе
Обновление: Существует другой подход , который может быть лучше (лично я еще не пробовал).Вы могли бы реализовать IDocumentQueryListener, чтобы заставить все запросы возвращать не устаревшие результаты:
var store = new EmbeddableDocumentStore { RunInMemory = true };
store.Initialize();
store.RegisterListener(new ForceNonStaleQueryListener());
public class ForceNonStaleQueryListener : IDocumentQueryListener
{
public void BeforeQueryExecuted(IDocumentQueryCustomization customization)
{
queryCustomization.WaitForNonStaleResults();
}
}