Примечание: Сделаны некоторые обновления на основе новой информации. Старые идеи были добавлены в виде комментариев ниже. Примечание: Сделаны некоторые обновления (снова) ) на основе новой информации. Старые идеи были добавлены в качестве комментариев ниже (снова).
Мы запускаем два экземпляра CouchDB на разных компьютерах за обратными прокси-серверами Apache. При попытке репликации между двумя экземплярами:
curl -X POST http://user:pass@localhost/couchdb/_replicate -d '{ "source": "db1", "target": "http://user:pass@10.1.100.59/couchdb/db1" }' --header "Content-Type: application/json"
(мы начал использовать curl для отладки проблемы)
мы получаем ошибку, похожую на:
{"error":"case_clause","reason":"{error,\n {{bad_return_value,\n {invalid_json,\n <<\"<!DOCTYPE HTML PUBLIC \\\"-//IETF//DTD HTML 2.0//EN\\\">\\n<html><head>\\n<title>404 Not Found</title>\\n</head><body>\\n<h1>Not Found</h1>\\n<p>The requested URL /couchdb/db1/_local/01e935dcd2193b87af34c9b449ae2e20 was not found on this server.</p>\\n<hr>\\n<address>Apache/2.2.3 (Red Hat) Server at 10.1.100.59 Port 80</address>\\n</body></html>\\n\">>}},\n {child,undefined,\"01e935dcd2193b87af34c9b449ae2e20\",\n {gen_server,start_link,\n [couch_rep,\n [\"01e935dcd2193b87af34c9b449ae2e20\",\n {[{<<\"source\">>,<<\"db1\">>},\n {<<\"target\">>,\n <<\"http://user:pass@10.1.100.59/couchdb/db1\">>}]},\n {user_ctx,<<\"user\">>,\n [<<\"_admin\">>],\n <<\"{couch_httpd_auth, default_authentication_handler}\">>}],\n []]},\n temporary,1,worker,\n [couch_rep]}}}"}
Итак, после дальнейшего исследования выяснилось, что apache возвращает эту ошибку, не пытаясь получить доступ к CouchDB (согласно файлам журнала). следующий URL
/couchdb/db1/_local/01e935dcd2193b87af34c9b449ae2e20
Apache передает запрос CouchDB и возвращает ошибку 404 CouchDB. С другой стороны, когда происходит репликация, фактически передается URL-адрес
/couchdb/db1/_local%2F01e935dcd2193b87af34c9b449ae2e20
, который apache определяет как отсутствующий документ и возвращает свою собственную ошибку 404 для без передачи запроса в CouchDB. Это, по крайней мере, дает мне несколько новых зацепок, но я все равно мог бы воспользоваться помощью, если бы у кого-нибудь был ответ на этот вопрос.