[
https://issues.apache.org/jira/browse/COUCHDB-1496?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13294242#comment-13294242
]
Maya Alipin commented on COUCHDB-1496:
--------------------------------------
Hi Dave, Thanks for the reply.
> CouchDB effectively tombstones deleted docs by replacing the content with
> {"_id": myid", "_deleted": true}
Sorry I don't quite understand the above statement.
I know that CouchDB marks deleted document with _deleted = true. But I don't
know that CouchDB also changes the _id of the deleted document.
Here is the sample document:
{
"_id": "fd906375bd77a7fa63b248766d012008",
"_rev": "3-4265ec72422ced8030b19bd441ef6371",
"type": [
"timesheets",
"timesheet"
],
"tasktype": "Testing",
"project": {
"_id": "timesheets.project:4",
"_rev": "1-097a42351376d974002ed8892275eb61",
"type": [
"projects",
"project"
],
"id": 4
},
"workdate": "2012-03-05 08:30:00",
"description": "#4955 Test Comparison, Position Tool and Charts.",
"charge": false,
"workhour": 2,
"employee": {
"_id": "timesheets.employee:maya",
"_rev": "1-52f74183f29b7f2c8a9fff5b919cdc03",
"name": "maya",
"type": [
"timesheets",
"employee"
]
},
"hourlyrate": 10,
"chargedfee": 0
}
And the filter:
function(doc, req)
{
if (doc._id.indexOf("_design") == 0 ){
return true;
}
var pid = req.query.pid;
if(doc.type && doc.type.length == 2) {
if ((doc.type[0] == "timesheets" && doc.type[1] == "setting")
|| (doc.type[0] == "timesheets" && doc.type[1] == "employee")
|| (doc.type[0] == "timesheets" && doc.type[1] ==
"tasktype")){
return true;
}
if (doc.type[0] == "projects" && doc.type[1] == "project" &&
doc._id === pid){
return true;
}
if(doc.type[0] == "timesheets" && doc.type[1] == "timesheet" &&
doc.project && doc.project._id === pid){
return true;
}
}
return false;
}
Is there any specific commands to include _deleted documents on filtered
replication?
> Incomplete Replication on Several Circumstances
> -----------------------------------------------
>
> Key: COUCHDB-1496
> URL: https://issues.apache.org/jira/browse/COUCHDB-1496
> Project: CouchDB
> Issue Type: Bug
> Affects Versions: 1.2
> Environment: iriscouch
> Reporter: Maya Alipin
> Priority: Minor
>
> I have found that on several circumstances, CouchDB's continous filtered
> replication doesn't do what I expect.
> 1. deleted documents in source database ends up not deleted in destination
> database
> 2. I notice on continuous replication, the replication status will remain
> incomplete until check-pointed sequence equals source sequence. On continuous
> filtered replication, an update may not pass the filter and cause the
> replication to become incomplete.
> I found the replication remains incomplete even if there is an update that
> pass the filter. I need to restart the replication to get the update
> replicated to the destination database.
> Test Scenario:
> 1. Trigger a filtered continuous replication from database X to database Y on
> _replicator database. Replication progress is 100%
> 2. Add new document(A1) on database X.
> 3. Document A1 pass the replication filter, thus A1 is replicated to database
> Y. Replication progress is 100%
> 4. Delete document A1 on database X. Replication progress become 99%,
> document A1 still exists on database Y.
> 6. Restart the filtered continuous replication from database X to database Y
> by deleting document on _replicator database and create it again
> 7. Replication progress stops at 99%.
> 8. Add new document(A2) on database X.
> 9. Document A2 pass the replication filter, thus A2 is replicated to database
> Y. Replication progress become 100%
> 10. Delete document A2 on database X. Replication progress become 99%,
> document A2 still exists on database Y.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira