Обновление значения CAS в случае сбоев сервера на couchbase - PullRequest
1 голос
/ 28 апреля 2020

Я пытаюсь обработать некоторые исключения в базе данных приложения. Метод upsert может выдать TemporaryFailureException , указывающий на временные сбои на стороне сервера. Может ли быть случай, когда значение CAS документа будет обновлено? В случае возникновения этого исключения я повторяю фиксированное количество раз с экспоненциальным backOff. Если значение CAS было обновлено, то при повторной попытке в следующий раз мне нужно убедиться, что в следующий раз, когда я передам обновленное значение CAS, в противном случае я получу CASMismatchException.

Так есть ли гарантия, что значение CAS не будет обновлено в случае сбоев на стороне сервера?

1 Ответ

0 голосов
/ 28 апреля 2020

CAS представляет «версию» документа и используется, когда вам нужна оптимистическая блокировка c (два приложения пытаются изменить один и тот же документ одновременно).

Исключение TemporaryFailureException возникает, когда на сервере возникают более сложные проблемы (сбой диска, нехватка памяти и т. д. c). Если ваш кластер настроен правильно, ваш сервер автоматически переключится на другой ресурс и его место займет другой узел. Итак, повторная попытка операции с каким-то механизмом backOff для ожидания продвижения сервера является допустимой стратегией.

Стоит подчеркнуть, что вы можете вызвать метод readFromReplica, если вам нужно прочитать документ в То время. Couchbase SDK также имеет внутренний выключатель.

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