我在升级我的spring-boot/mongodb-driver时遇到了一个非常令人困惑的问题。作为数据库,我们运行的是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-pipeline中,使用具有相同图像的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跳过了那个连接问题。
发布于 2020-12-09 00:15:13
在升级之后,MongoCollectionImpl.doCount(..)不会在启动前提交结果,而只是空闲主线程。我设法跳过了我的计算,稍后在某个地方进行,现在它起作用了。
https://stackoverflow.com/questions/65197948
复制相似问题