Lidiar con conflictos causados ​​por la replicación en BigCouch

El CouchDB Replicación y conflictos página wiki sugiere usar _bulk_docs con all_or_nothing=true para escribir por la fuerza nuevas versiones de documentos, incluso si eso introduce conflictos en la escritura, pero luego se resuelven poco después en lecturas posteriores. He implementado esto y conceptualmente parece funcionar bien.

Pero BigCouch no admite all_or_nothing semántica, por lo que las escrituras en documentos masivos pueden devolver resultados de Conflicto 409. ¿Cuál es la mejor práctica para implementar una resolución de conflictos a nivel de aplicación similar para los conflictos introducidos por la replicación en BigCouch? ¿Debería considerar la resolución de conflictos en tiempo de escritura en su lugar?

preguntado el 01 de julio de 12 a las 04:07

Ups, hice una pregunta que no era sobre C#. -

Eso podría ser un pequeño problema. Si quieres podemos tener una charla rápida en el chat.SO CouchDB y Couchbase sala de chat. -

@akent si encuentra alguna solución después del chat, ¿puede publicarla como respuesta a su propia pregunta? El tema es muy interesante para mí. -

1 Respuestas

Obtenga el número de revisión del documento que se actualizará si hay un conflicto durante el archivo adjunto y llame recursivamente en caso de conflicto.

$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 );

Respondido el 07 de junio de 13 a las 13:06

No estoy seguro de qué tienen que ver los archivos adjuntos con esto. Esto no me parece una solución. - acido

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.