我有一个CouchDB服务器,它在前端代理后面运行,只允许GET
,HEAD
和OPTIONS
个请求。 <{1}},POST
和PUT
都是不允许的。
当我在本地计算机上设置复制以从远程服务器提取时,它可以正常工作,直到它到达终点,当它尝试DELETE
到POST
时。这将返回/_ensure_full_commit
响应并导致复制崩溃,并在开始时重新启动。
我可以阻止CouchDB复制调用401 Unauthorized
,还是需要更改前端代理配置以允许/_ensure_full_commit
到此网址?
答案 0 :(得分:1)
看起来复制器代码总是尝试在复制检查点过程中提交给BOTH服务器:https://github.com/apache/couchdb/blob/master/src/couch_replicator/src/couch_replicator.erl#L695
因此,目前最快的解决方案是在代理级别伪造“成功”响应或简单地通过该请求,特别是因为我们都不知道它是否“必要”。
但是我也强烈建议你ask on the mailinglist and/or file a bug关于这一点 - 你似乎很奇怪你不能只使用GET请求进行拉动复制。
更新:记得最近重写了最近登陆开发分支的复制器代码,所以另一个考虑因素是首先试用new replicator in 1.2!