Stéphane Alnet created COUCHDB-1893: ---------------------------------------
Summary: Allow replication filters to meaningfully apply to deleted documents Key: COUCHDB-1893 URL: https://issues.apache.org/jira/browse/COUCHDB-1893 Project: CouchDB Issue Type: Improvement Components: JavaScript View Server Reporter: Stéphane Alnet A document that is deleted using the DELETE command will be presented to a replication filter as an empty record with only a `_deleted:true` field. A replication filter can then only use the document ID to decide whether or not to propagate the deletion; in most cases this is not sufficient, and one may have to pass along deletion documents for IDs that would not have been replicated by the filter. This might lead to document IDs being leaked to the target database, which might be undesirable; more importantly if the goal of filtering was to build a smaller subset of the source database (for example to replicate a very large database to a device that has smaller storage space), those deletion documents might overfill the database (they never get compacted). I had somewhat documented this issue on the Wiki (http://wiki.apache.org/couchdb/Replication#Filtered_Replication) a while back but never got to add it to JIRA. Dave Cottlehuber on the PouchDB list suggested to use PUT with a `_deleted:true` field to work around the problem (the PUT body can then contain data sufficient to enable the filter to work). However we're still stuck in case DELETE was used instead. My suggestion is to expand the replication filter API to add an optional third argument filter(doc,req,old_doc) where old_doc if present references the version of the document that will get deleted. It is then up to the filter to use the _deleted flag in `doc` and the values in `old_doc`. (It might be useful/meaningful/easier to add old_doc in all cases; at this point I'm only suggesting to add it in the case doc contains a _deleted field.) -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira