Может ли обработчик обновления документов CouchDB получить конфликт обновления?

какова вероятность конфликта версий при использовании обработчика обновлений? должен ли я беспокоиться о коде обработки конфликтов при написании надежной функции обновления?

Как описано в Обработчики Обновления Документов, CouchDB 0.10 и более поздние версии позволяют модификации документов на стороне сервера по требованию.

обработчики обновлений могут обрабатывать форматы, отличные от JSON; но другие основные функции:

  • интерфейс HTTP произвольно сложный код модификации документа
  • подобный код не нужно писать для всех возможных клиентов-сухая архитектура
  • выполнение быстрее и с меньшей вероятностью попадет в конфликт ревизий

мне непонятен третий момент. При локальном выполнении обработчик обновлений будет работать намного быстрее и с меньшей задержкой. Но в ситуациях с высокой конкуренцией это не гарантирует успешного обновления. или обработчик обновлений гарантировать успешное обновление?

1 ответов


конфликты обновлений по-прежнему возможны при использовании обработчиков обновлений.

из-за сокращения времени "туда и обратно" вероятность конфликта обновления ниже но не ноль. Конфликт будет чувствовать себя нормально: код ответа 409 с этим JSON:

{"error":"conflict","reason":"Document update conflict."}

Я успешно вызвал конфликт с помощью пример обработчика обновления документа, и Бегущий завиток два раза подряд в скорлупе.

curl -v -X PUT \
http://localhost:5984/db/_design/app/_update/accumulate/my_doc?amount=10 \
& curl -X PUT \
  http://localhost:5984/db/_design/app/_update/accumulate/my_doc?amount=1

один из завитков ответы (случайным образом) были 201, а другие-409.

обработчики обновления документов принципиально не изменяют CouchDB

обновления подвержены конфликтам, а также отказов проверки (401 Unauthorized, 403 Forbidden, etc.)