我正在尝试在Android平板电脑和系统之间设置复制。我使用CouchDbInstance
对象来设置复制
这是我的代码
/**
* @param builder
* @param couchDbInstance
* @return the @Link{ReplicationStatus} for the replication command @Link {ReplicationCommand.Builder}
*/
private ReplicationStatus replicate(ReplicationCommand.Builder builder, CouchDbInstance couchDbInstance) {
int retryCount = 0;
ReplicationStatus replicationStatus = null;
while (retryCount < REPLICTAION_RETRY_MAX) {
replicationStatus = couchDbInstance.replicate(builder.build());
if (replicationStatus.isOk()) {
break;
}
retryCount++;
}
return replicationStatus;
}
在沙发日志中,我看到_replicate上的POST返回404
我们使用couchbasemobile
,我知道它不再受支持。我是否可以知道是否不支持_replicate
复制方式,是否应该使用_replicator
复制方式
答案 0 :(得分:0)
我不太了解java,所以我猜这里,但我认为你的问题是误解了如何使用_replicate。
此处的文档说明:http://wiki.apache.org/couchdb/Replication它不再是官方文档,因为我认为他们希望人们使用_replicator。
要开始连续复制,请POST到_replicate:
{"source":"example-database","target":"target-db", "continuous": true}
作为回应,你得到:
{"ok":true,"_local_id":"127c65ee56bcd253d9a019f5a6f84f16+continuous+create_target"}
要获取复制的状态,请GET _active_tasks。作为响应,对于每个活动复制,您将获得:
{"ok":true,"_local_id":"127c65ee56bcd253d9a019f5a6f84f16+continuous+create_target"}
如果“_local_id”不在_active_tasks中,则不会进行复制。
我认为你的问题就在这里:
replicationStatus = couchDbInstance.replicate(builder.build());
我不知道您正在使用的库,但这似乎是错误的。您应该检查_active_tasks以查看_local_id是否存在。此外,您似乎正在实施自我连续复制。
使用couchbasemobile,我发现有一些连续复制的错误,并且最好定期GET _active_tasks来检查连续复制是否仍在进行,如果不是则重新启动它们。但是你仍然应该使用连续复制。