The problem is, I 'technically' don't have access to add a filter function on 
the Source server - it could be owned by someone else.  So I must do my 
filtering at the target server.

What I've discovered is that in all the documentation out there in the 
wiki/blogs/listservs - they're all missing some "extremely critical" 
documentation for validate_doc_update.  What I've determined so far via 
laborious trial and error is:

A. To reject due to authentication, you must throw an error object:
        { unauthorized: "Your message stating authentication error" }

        This will kill the replication process completely.

B. To just blindly cause replication to stop due to an error:
        { error: "Your message describing the error" }

C. To only reject the new document being validated, and CONTINUE validating 
other docs, throw:
        { forbidden: "Your message why you're forbidding the object from your 
db" }

There might be other errors that could be thrown, but I got no idea what they 
are, and NONE of the above is really documented anywhere - only hinted at in a 
few places.
 
Now if I can find my username for the wiki - I'll try and update it!

Jim Klo
Senior Software Engineer
Center for Software Engineering
SRI International




On Dec 21, 2011, at 4:41 PM, Rogutės Sparnuotos wrote:

> Jim Klo (2011-12-21 16:15):
>> Okay, I think I finally figured out how to get the validate_doc_update 
>> function to work.
>> 
>> Now the question is... I only want to replicate some of the docs.  
>> Regardless of whether I return true or false  all docs seem to replicate. 
>> Here's a link to the validate function: https://gist.github.com/1507943
>> 
>> My log shows nothing but thousands of lines like this:
>> [Wed, 21 Dec 2011 23:51:15 GMT] [info] [<0.16027.7>] OS Process 
>> #Port<0.22580> Log :: validating for alignment.
>> [Wed, 21 Dec 2011 23:51:15 GMT] [info] [<0.16027.7>] OS Process 
>> #Port<0.22580> Log :: 26120f9dccbe452abae585889988ff71-distributable is NOT 
>> being replicated.
>> 
>> and none showing that it is replicating, however afaik, it's replicating 
>> everything, as my empty db, now has thousands of docs that shouldn't be 
>> there.
>> 
>> The docs for the validate_doc_update seems to indicate to throw an error 
>> instead of returning true or false; however doing that causes replication to 
>> fail.
>> 
>> What might I be doing wrong?
> 
> You want http://wiki.apache.org/couchdb/Replication#Filtered_Replication.
> And then throw an error in validate_doc_update, so that unfiltered
> replication fails.
> 
> -- 
> --  Rogutės Sparnuotos

Reply via email to