Причинная согласованность с Mongo 4.2.1 и драйвером Go 1.1.2 - PullRequest
0 голосов
/ 04 ноября 2019

Я вижу некоторые нарушения "читай, что ты написал" в 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...