ReactiveMongoTemplate .save не работает над добавлением аннотации @compondindex к классу collection

#spring-boot #project-reactor #spring-mongodb #mongodb-indexes

#весенняя загрузка #проект-реактор #spring-mongodb #mongodb-индексы

Вопрос:

У меня есть класс Java «Class A», объект которого сохраняется в MongoDB с использованием операции reactiveMongoTemplate.save реактивным способом.

 public class A {
 // field 1
 // field 2
 ..
 // field n
}
  

Это работало отлично и заполнило много данных в соответствующую коллекцию.

Теперь я решил ввести индексы в коллекцию и, следовательно, добавил эту аннотацию к классу

 @CompoundIndex(name ="collection_index_name", def = "{'field1':1, 'field1':-1}", unique=true)
  

Теперь, после добавления этой аннотации, я вижу, что мой MongoDB writer (процесс, который записывает данные в вышеуказанную коллекцию mongodb) надолго зависает (15-20 минут) или больше ничего не обрабатывает.
При отладке я вижу, что элемент управления достигает точки, в которой у меня есть ReaciveMongoTemplate.save() операция. Но после выполнения реактивного метода save я просто получаю приведенное ниже предупреждение, и никаких записей в коллекцию не происходит.

 Automatic index creation will be disabled by default as of Spring Data MongoDB 3.x.
    Please use 'MongoMappingContext#setAutoIndexCreation(boolean)' or override 'MongoConfigurationSupport#autoIndexCreation()' to be explicit.
    However, we recommend setting up indices manually in an application ready block. You may use index derivation there as well.

    > -----------------------------------------------------------------------------------------
    > @EventListener(ApplicationReadyEvent.class)
    > public void initIndicesAfterStartup() {
    >
    >     IndexOperations indexOps = mongoTemplate.indexOps(DomainType.class);
    >
    >     IndexResolver resolver = new MongoPersistentEntityIndexResolver(mongoMappingContext);
    >     resolver.resolveIndexFor(DomainType.class).forEach(indexOps::ensureIndex);
    > }
    > -----------------------------------------------------------------------------------------
  

Как только я удаляю вышеупомянутую аннотацию или заменяю новой пустой коллекцией и снова запускаю тот же код, я вижу, что записи немедленно сохраняются.

Есть ли какое-либо объяснение такому поведению? Имеет ли это какое-то отношение к добавлению индекса в коллекцию после того, как внутри коллекции уже было заполнено много данных?