处理由BigCouch中的复制引起的冲突

时间:2012-07-01 03:42:05

标签: couchdb bigcouch

CouchDB Replication and Conflicts wiki页面建议使用_bulk_docsall_or_nothing=true来强制编写新版本的文档,即使这会在写入时引入冲突,但在后续读取后不久就会解决。我已经实现了这一点,从概念上看它似乎工作正常。

但是BigCouch不支持all_or_nothing语义,因此写入批量文档可以返回409 Conflict结果。对BigCouch中的复制引入的冲突实施类似的应用级冲突解决方案的最佳做法是什么?我应该查看写时冲突解决方案吗?

1 个答案:

答案 0 :(得分:1)

如果在附件期间发生冲突并在发生冲突时递归调用,请获取要更新的文档的修订号,

$url = "http://couchdb/DATABASE/DOCID/ATTACHMENTNAME?rev=$rev";
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );
curl_setopt( $ch, CURLOPT_PUT, true );
curl_setopt( $ch, CURLOPT_URL, $url );
curl_exec( $ch );