You could take all the revs from the _conflicts list, and delete them
with one _bulk_docs call, e.g.:

curl -vX POST http://127.0.0.1:5984/foobase/_bulk_docs -H 'Content-Type:
application/json' -d '{"all_or_nothing": true, "docs":[{"_id":"doc",
"_rev":"2-818ecad858044ee3bb6017e938e98411", "_deleted":true},
{"_id":"doc", "_rev":"2-3bf9067dce5f550d9bfcdab1217045e7",
"_deleted":true}, {"_id":"doc",
"_rev":"2-13839535feb250d3d8290998b8af17c3", "_deleted":true}]}'

- Klaus


On Sun, 2010-09-12 at 23:18 +0200, Nikolai Teofilov wrote:
> But something changed since 0.11 ...
> 
> In my application I have a master server and several slaves. Each slave pull 
> a document from the master, attach some data and push it back to the master 
> then this document can be updated from another slave and so on ... and this 
> works perfectly in 0.11. I was able to delete the document on the master 
> server with one single delete call. 
> Now each attachment on the slave will introduce a conflict so if I have 
> several attachments on some of the slave machines and if I want to delete 
> after that this document on the master database I have to delete each 
> document revision for each attachment and repeat this for each slave ... 
> 
> Is there a way to delete the document with the whole history with a single 
> API call?
> 
> Thanks
> Nikolai
> 
>  
> 
> On 12.09.2010, at 22:36, Klaus Trainer wrote:
> 
> >> Correct me if I am wrong but there should be message like after the DELETE 
> >> operation:
> >> 
> >> {"error":"conflict","reason":"Document update conflict."}
> > 
> > ...when you do what?
> > 
> >> but I get:
> >> 
> >> {"ok":true,"id":"doc","rev":"3-9ac5f6d05704bf0b5e427d5b6ce7fc92"}
> >> 
> >> Furthermore I don't understand where does the conflict comes in this 
> >> situation?
> > 
> > The point is that when using the _bulk_docs API and "all_or_nothing":
> > true, documents are written even if the given _rev number doesn't match
> > the current one. In that case (_rev number doesn't match), you get a new
> > conflict.
> > 
> > - Klaus
> > 
> > 
> > On Sun, 2010-09-12 at 22:19 +0200, Nikolai Teofilov wrote:
> >> Hi Klaus,
> >> 
> >> Correct me if I am wrong but there should be message like after the DELETE 
> >> operation:
> >> 
> >> {"error":"conflict","reason":"Document update conflict."}
> >> 
> >> but I get:
> >> 
> >> {"ok":true,"id":"doc","rev":"3-9ac5f6d05704bf0b5e427d5b6ce7fc92"}
> >> 
> >> Furthermore I don't understand where does the conflict comes in this 
> >> situation?
> >> 
> >> Cheers
> >> Nikolai
> >> 
> >> 
> >> On 12.09.2010, at 21:27, Klaus Trainer (JIRA) wrote:
> >> 
> >>> 
> >>>   [ 
> >>> https://issues.apache.org/jira/browse/COUCHDB-885?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12908535#action_12908535
> >>>  ] 
> >>> 
> >>> Klaus Trainer commented on COUCHDB-885:
> >>> ---------------------------------------
> >>> 
> >>> Note that the procedure I've previously described will create a conflict:
> >>> 
> >>> curl -X GET http://127.0.0.1:5984/foobase/doc?conflicts=true
> >>> {"_id":"doc","_rev":"3-b06fcd1c1c9e0ec7c480ee8aa467bf3b","foo":"bar","_conflicts":["1-4c6114c65e295552ab1019e2b046b10e"]}
> >>> 
> >>>> Delete document with attachment fails after replication.
> >>>> --------------------------------------------------------
> >>>> 
> >>>>               Key: COUCHDB-885
> >>>>               URL: https://issues.apache.org/jira/browse/COUCHDB-885
> >>>>           Project: CouchDB
> >>>>        Issue Type: Bug
> >>>>        Components: Replication
> >>>>  Affects Versions: 1.0.1
> >>>>       Environment: Mac OSX, Windows XP, Windows 7
> >>>>          Reporter: Nikolai Teofilov
> >>>> 
> >>>> Step to reproduce the bug:
> >>>> 1.  Make database "test" on a remote couchdb server that reside on a 
> >>>> different machine! 
> >>>> 2.  Create new document:  "http://remote-server:5984/test/doc";
> >>>> 3.  Create database "test"  on the local couchdb  server.
> >>>> 4.  Trigger pull replication  http://remote-server:5984/test -> 
> >>>> http://localhost:5984/test
> >>>> 5.  Attach a file to the replicated document on the local couchdb server.
> >>>> 6.  Trigger push replication http://localhost:5984/test  -> 
> >>>> http://remote-server:5984/test
> >>>> 7.  Delete the replicated document that contain now the attachment on 
> >>>> remote database.
> >>>> 
> >>>>     This operation will delete the last revision of the document (after 
> >>>> the replication) but the previous revision of the document (before the 
> >>>> replication) still exist in the database.
> >>>> This defect appears only for replications between databases on two 
> >>>> different couchdb servers, and only for documents that were updated with 
> >>>> a new attachment.
> >>> 
> >>> -- 
> >>> This message is automatically generated by JIRA.
> >>> -
> >>> You can reply to this email to add a comment to the issue online.
> >>> 
> >> 
> > 
> > 
> 


Reply via email to