如何解决MongoDB:java.lang.IllegalStateException:状态应该是:来自同一个 MongoClient 的 ClientSession
我有一个应用程序将数据存储在使用过的 MongoDB Atlas(集群层: M0 SandBox Shared RAM,512 MB Storage) 收藏作为一个交易。示例代码如下。
MongoClient mongoClient = MongoClients.create("Connection-URL");
MongoDatabase mongoDatabase = mongoClient.getDatabase("DATABASE");
ClientSession clientSession = mongoClient.startSession();
clientSession.startTransaction();
status = mongoDatabase.getCollection(collection).insertOne(clientSession,insertDocument);
if (status == IS_SUCCESS) {
clientSession.commitTransaction();
} else {
clientSession.abortTransaction();
}
clientSession.close();
这适用于多个请求。但是,一段时间后(无法说出确切时间),如果我调用上述功能,则会出现以下异常。
java.lang.IllegalStateException: state should be: ClientSession from same MongoClient
at com.mongodb.assertions.Assertions.isTrue(Assertions.java:72)
at com.mongodb.client.internal.MongoClientDelegate$DelegateOperationExecutor.getClientSession(MongoClientDelegate.java:279)
at com.mongodb.client.internal.MongoClientDelegate$DelegateOperationExecutor.execute(MongoClientDelegate.java:206)
at com.mongodb.client.internal.MongoCollectionImpl.executeSingleWriteRequest(MongoCollectionImpl.java:1053)
at com.mongodb.client.internal.MongoCollectionImpl.executeInsertOne(MongoCollectionImpl.java:503)
at com.mongodb.client.internal.MongoCollectionImpl.insertOne(MongoCollectionImpl.java:499)
at com.mongodb.client.internal.MongoCollectionImpl.insertOne(MongoCollectionImpl.java:492)
at org.sofflix.mongo.impl.InsertDocuments.insertItem(InsertDocuments.java:24)
并且一直失败...
我正在使用以下客户端连接器从我的 JAVA 应用程序进行连接
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongo-java-driver</artifactId>
<version>3.12.8</version>
</dependency>
有人知道为什么会这样吗?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。