Проблема с MongoDB при обновлении с Spring Boot 2.2.x до 2.3x

#mongodb #spring-boot #spring-data-mongodb

#mongodb #весенняя загрузка #spring-data-mongodb

Вопрос:

У меня очень запутанная проблема с обновлением моего драйвера spring-boot / mongodb. В качестве базы данных мы используем экземпляр mongodb: 4.0.

До того , как у меня было

 Spring Boot 2.2.8
"mongo-java-driver|async|mongo-java-driver-reactivestreams", version: "3.11.2|1.12.0"
 

и теперь переключился на

 Spring Boot 2.3.4
"mongo-java-driver|reactive-streams", version: "4.0.5"
 

В нашем ci-test-конвейере все в порядке с mongodb-testcontainer с тем же изображением. Также подключение из моей IDE с этим запущенным приложением к нашим базам данных не вызывает проблем.

Но: в нашей тестовой системе иногда он запускается так же быстро, как обычно, иногда для запуска требуется в 3-6 раз больше времени, иногда это событие не запускается через 10 минут. В нашей «более крупной тестовой системе» я никогда не достигал фазы «после запуска» после обновления (что может дать подсказку, что это может зависеть от размера данных?).

Когда я просматриваю журналы Mongo, я не вижу там никаких выполненных запросов или запрошенных сборок индекса, что может увеличить время запуска. Я только понял, что некоторые модели поведения изменились, например, запрос count теперь стал агрегированным (но этот запрос, выполненный вручную, также был быстрым).

В моем приложении отображаются только такие журналы

 org.mongodb.driver.protocol.command      : Sending command '{"ismaster": 1, "$db": "admin"}' with request id 203 to database admin on connection [connectionId{localValue:3, serverValue:107164}] to server XXX
org.mongodb.driver.protocol.command      : Execution of command with request id 203 completed successfully in 1.15 ms on connection [connectionId{localValue:3, serverValue:107164}] to server XXX
org.mongodb.driver.cluster               : Updating cluster description to  {type=STANDALONE, servers=[{address=XXX, type=STANDALONE, roundTripTime=1.7 ms, state=CONNECTED}]
org.mongodb.driver.cluster               : Checking status of XXX
 

Я действительно не знаю, где отлаживать дальше, так как все отлично работает с моего локального компьютера, и я также вижу, что данные при запуске передаются из базы данных, поэтому нет проблем с поиском ИТ-принципа базы данных.

РЕДАКТИРОВАТЬ: после новой проверки я также сталкиваюсь с тем же результатом из моего локального проекта, так что, похоже, должен быть какой-то кэшированный материал, который не был очищен, что помогло spring пропустить эту проблему с подключением.

Ответ №1:

Каким-то образом после обновления MongoCollectionImpl.doCount(..) не будет выдавать результаты перед запуском, а просто простаивает основной поток. Мне удалось пропустить мой запрос и сделать это где-нибудь позже, и теперь он работает.