如何更改transactionLifetimeLimitSeconds在我的云副本集中。 首先,我正在创建新 session :
var client = new MongoClient(new MongoUrl(_connectionString));
var session= client.StartSession();
下一步
session.StartTransaction();
/* Code that takes longer than 1 minute*/
session.CommitTransaction();
当启动和提交事务之间的代码结束时,我会收到类似的错误
Exception thrown: 'MongoDB.Driver.MongoCommandException' in MongoDB.Driver.Core.dll ("Command insert failed: Transaction 1 has been aborted..") Exception thrown: 'MongoDB.Driver.MongoCommandException' in MongoDB.Driver.Core.dll
如果代码花费的时间少于 1 分钟,则一切正常。
最佳答案
您可以调用此命令 db.adminCommand( { setParameter: 1, transactionLifetimeLimitSeconds: 30 } )
,如下所示:
var adminDb = client.GetDatabase("admin");
adminDb.RunCommand<BsonDocument>("{ setParameter: 1, transactionLifetimeLimitSeconds: 30 }");
另外,请检查此交易选项:http://mongodb.github.io/mongo-csharp-driver/2.11/apidocs/html/P_MongoDB_Driver_TransactionOptions_MaxCommitTime.htm ,我相信它应该有帮助(但我个人没有使用它)。
关于c# 如何延长mongodb事务生命周期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64354454/