Я вижу некоторые нарушения "читай, что ты написал" в Mongo 4.2.1 и драйвере Go 1.1.2
Это на моей машине разработки (Ubuntu), кластера нет, простоЕдиная база данных, и она довольно маленькая (сотни документов, если таковая).
Она имеет много памяти (32 гигабайта) и быстрый диск (NVME). Файловая система ext4 (я знаю, что XFS предпочтительнее для производительности, но здесь практически нет нагрузки).
Что происходит так: одна сопрограмма GO выдает обновление небольшого документа, устанавливая целое число (Number)к новому значению.
Через секунду или около того другой поток выполняет чтение и не видит запись. Иногда.
Повторение считывания через несколько секунд приведет к правильному считыванию нового значения.
Оба потока (сопрограммы 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