Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Couchdb Wiki" for 
change notification.

The "Replication" page has been changed by JensAlfke:
http://wiki.apache.org/couchdb/Replication?action=diff&rev1=40&rev2=41

  Changes on the master will not automatically replicate to the slaves. See 
“Continuous Replication” below.
  
  === Run Replication ===
- Replication is triggered by sending a POST request to the `_replicate` URL 
with a JSON object in the body that includes a `source` and a `target` member.
+ Replication is triggered by sending a POST request to the `_replicate` URL. 
The body is JSON with the following allowed fields:
+ 
+ ||'''Field Name''' ||'''Description''' ||
+ ||''source'' || Identifies the database to copy revisions from. Can be a 
string containing a local database name or a remote database URL, or an object 
whose `url` property contains the database name or URL. ||
+ ||''target'' || Identifies the database to copy revisions to. Same format and 
interpretation as `source`. ||
+ ||''cancel'' || Include this property with a value of `true` to cancel an 
existing replication between the specified `source` and `target`. ||
+ ||''continuous'' || Include this property with a value of `true` to make the 
replication ''continuous''. Default value is `false`. ||
+ ||''doc_ids'' || Optional array of document IDs; if given, only these 
documents will be replicated. ||
+ ||''filter'' || Name of a ''filter function'' that can choose which revisions 
get replicated. ||
+ ||''proxy'' || Optional proxy server URL. ||
+ ||''query_params'' || Optional object containing properties that are passed 
to the filter function. ||
+ 
+ 
+ The `source` and a `target` fields indicate the databases that documents will 
be copied ''from'' and ''to'', respectively. Use just the name for a local 
database, or the full URL for a remote database. A local-to-remote replication 
is called a ''push'', and remote-to-local is called a ''pull''. Local-to-local 
or even remote-to-remote are also allowed, but rarer. For example:
  
  {{{
  POST /_replicate HTTP/1.1
  
  {"source":"example-database","target":"http://example.org/example-database"}
  }}}
- `source` and `target` can both point at local databases, remote databases and 
any combination of these.
  
  If your local CouchDB instance is secured by an admin account, you need to 
use the full URL format
  
@@ -133, +145 @@

  
  === Authentication ===
  
- In some versions of CouchDB, if the remote username or password contains a 
special character, CouchDB will not handle these properly. However 
authentication of a remote source or target can be done manually using headers 
to work around the issue.
+ The remote database may require authentication, especially if it's the 
`target` because the replicator will need to write to it. The easiest way to 
authenticate is to put a username and password into the URL; the replicator 
will use these for HTTP Basic auth.
  
+ In some older versions of CouchDB, if the remote username or password 
contains a special character like an `@` sign, CouchDB will not handle these 
properly. You can work around this by making the `source` or `target` property 
an object, and adding a `headers` property to add a custom `Authorization:` 
header.
+ 
- For example this will most likely not work (assuming username 
"[email protected]" has password "password"), even though the URL is properly 
formatted:
+ For example this may not work (assuming username "[email protected]" has 
password "password"), even though the URL is properly formatted:
  
  {{{
  POST /_replicate HTTP/1.1
@@ -143, +157 @@

  {"source":"https://bob%40example.com:[email protected]:5984/db";, 
"target":"local-db"}
  }}}
  
- (In this case a broken CouchBD will encode the username as 
"bob%40example.com" instead of "[email protected]" when submitting authorization 
to the remote source.)
+ (In this case a broken CouchDB will encode the username as 
"bob%40example.com" instead of "[email protected]" when submitting authorization 
to the remote source.)
  
- To work around the issue, use a JSON hash as follows:
+ To work around the issue, use a JSON object for `source` or `target`, instead 
of a string, as follows:
  
  {{{
  POST /_replicate HTTP/1.1
@@ -158, +172 @@

  echo -n '[email protected]:password' | base64
  }}}
  
- Using a JSON hash (instead of a plain string) may also be used to specify 
OAuth (by adding a "oauth" field to the hash).
+ For OAuth authentication, add an `oauth` property to the `source`/`target` 
object. Its properties are `consumer_secret`, `consumer_key`, `token_secret` 
and `token`. 
  
  == Replicator database ==
  

Reply via email to