Может ли обработчик обновления документов 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.)