Hi folks, I committed some code today to enable continuous replication
between CouchDB servers. I could use some help defining the client
API, though. To recap, replication has always been triggered RPC-
style by a request like
POST /_replicate -d '{"source":"foo", "target":"http://example.com/
bar"}'
this request would block until the replication had completed and then
you'd get a 200 response code and something like
{
"ok": true,
"session_id": uuid(),
"source_last_seq": 1234,
"history":[....]
}
Well, it doesn't make too much sense to do the same with continuous
replication because the response will never arrive. Basically, I
think we need to answer the following questions:
1. How does a user trigger a continuous replication? Simplest
extension of the current API would be
POST /_replicate -d '{"source":"foo", "target":"http://example.com/
bar", "continuous":true}'
2. How does the server respond to that request? Perhaps a "202
Accepted" along with the replication ID?
3. How does a client monitor the progress of a continuous
replication? The replication will show up in _active_tasks, but I'd
like to have a way to get all the history information. If we return
the replication ID the client could GET the _local doc with that ID,
but we probably want a resource that's a bit easier to discover.
4. How can we configure replications that survive a server restart?
Adam