Случайные сбои при использовании транзакций с сегментированными коллекциямиJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Случайные сбои при использовании транзакций с сегментированными коллекциями

Сообщение Anonymous »

У меня есть экземпляр mongodb с тремя сегментами, каждый из которых имеет три узла, из которых 2 являются узлами данных и один арбитр. Я пытаюсь провести простой тест, в котором я вставляю 3 документа в 3 сегментированные коллекции, по одному документу в каждую. Когда я запускал тест, я иногда получаю следующую ошибку при фиксации транзакции:

Код: Выделить всё

Caused by: com.mongodb.MongoCommandException: Command failed with error 148 (ReadConcernMajorityNotEnabled): 'Transaction was aborted :: caused by :: from shard  :: caused by :: 'prepareTransaction' is not supported for replica sets with arbiters' on server . The full response is {"ok": 0.0, "errmsg": "Transaction was aborted :: caused by :: from shard  :: caused by :: 'prepareTransaction' is not supported for replica sets with arbiters", "code": 148, "codeName": "ReadConcernMajorityNotEnabled", "$clusterTime": {"clusterTime": {"$timestamp": {"t": 1736547088, "i": 7}}, "signature": {"hash": {"$binary": {"base64": "6Bkn5UsUlzWG6m4kTubk7T6FcNE=", "subType": "00"}}, "keyId": 7404841909740371970}}, "operationTime": {"$timestamp": {"t": 1736547088, "i": 7}}, "recoveryToken": {"recoveryShardId": ""}}
Поскольку это происходило случайным образом, я решил выполнить 100 транзакций последовательно и обнаружил, что около 60-70% из них завершаются с этой ошибкой, а остальные завершаются успешно. Если то, что сообщает ошибка, верно, то не должны ли все транзакции завершаться с одним и тем же кодом ошибки? Мне сказали попробовать разные уровни важности чтения, то есть большинство и моментальный снимок, и даже разные предпочтения чтения, но ничего не помогло. мы по-прежнему видим «ReadConcernMajorityNotEnabled» в сообщении об ошибке, даже если мы явно установили его в параметрах транзакции. Видя завершение некоторых транзакций, мы считаем, что должен быть способ заставить их все работать, но не знаем, как это сделать.
Еще одна вещь, которая не кажется важной, но я все равно должен упомянуть, это то, что поведение отката транзакций соответствует ожиданиям. если транзакция прерывается до завершения, я не вижу никаких изменений в базе данных.
Кто-нибудь понял, что мы, возможно, делаем неправильно для той конфигурации кластера, которая у нас есть.
Привет!

Подробнее здесь: https://stackoverflow.com/questions/793 ... ollections
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»