我看到Mongo 4.2.1和Go驱动程序1.1.2违反了“阅读您所写内容”的规定
这是在我的开发机器(Ubuntu)上,没有集群,只有一个数据库,而且非常小(如果有的话,有数百个文档)。
它具有足够的内存(32 GB)和快速磁盘(NVME)。文件系统是ext4(我知道XFS在性能上是首选,但是这里几乎没有负载)。
发生的事情是:一个GO协程发布了一个小文档的更新,将整数(数字)设置为一个新值。
大约一秒钟后,另一个线程进行了读取,而看不到写入。有时。
几秒钟后重复读取将正确地读回新值。
两个线程(GO协程)都使用相同的Mongo连接。
我尝试配置如下所示的读写问题,尽管据我了解,“多数”是两者的默认设置。它没有帮助。
readConcern := readconcern.Majority()
writeConcern := &writeconcern.WriteConcern{}
writeConcern = writeConcern.WithOptions(
writeconcern.WMajority())
mongoConn, mongoErr := mongo.Connect(mongoCtx, &options.ClientOptions{
Hosts: []string{"localhost"},
ReadConcern: readConcern,
WriteConcern: writeConcern})
通过阅读文档*,我不清楚是否应该为Mongo 3.6或更高版本自动启用临时一致性,或者是否需要由应用程序或驱动程序启用。
如果是后者,如何与官方GO驱动程序保持随意一致性?
[*] https://docs.mongodb.com/manual/core/read-isolation-consistency-recency/#sessions