couchdb-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Maya Alipin (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (COUCHDB-1496) Incomplete Replication on Several Circumstances
Date Wed, 13 Jun 2012 07:51:43 GMT

    [ 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

        

Mime
View raw message