#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(..) не будет выдавать результаты перед запуском, а просто простаивает основной поток. Мне удалось пропустить мой запрос и сделать это где-нибудь позже, и теперь он работает.