«Ошибка запуска репликации» в couchdb - PullRequest
3 голосов
/ 06 сентября 2011

Я создаю документ репликации "pull" в couchdb 1.1.0:

curl -X PUT http://admin:pass@localhost:5984/_replicator/maintenance -d '
{
    "_id": "maintenance",
    "source":  "http://other.host:5984/maintenance",
    "target":  "maintenance",
    "create_target":  true
}'

Теперь я проверяю состояние репликации:

curl -X GET http://admin:pass@localhost:5984/_replicator/maintenance
{"_id":"maintenance","_rev":"2-0f25f80a2726640944d527d6035e5b80","source":"http://other.host:5984/","target":"maintenance","create_target":true,"_replication_state":"error","_replication_state_time":"2011-09-06T02:35:10+02:00","_replication_id":"354746bf47831195261bf54f3cb6136b"}

Что-то идет не так, но яне знаю, что.Я даже создал базу данных вручную, но она все еще не работает.Любые идеи о том, где проблема может быть?

Ответы [ 5 ]

4 голосов
/ 13 сентября 2011

Оказывается, я использовал неправильный URL для запуска репликации. Вместо

curl -X PUT http://admin:pass@localhost:5984/_replicator/maintenance

Я должен сделать:

curl -X POST http://admin:pass@localhost:5984/_replicate -H ...

Теперь репликация начинается, как и ожидалось. Он даже может быть запущен с create_target и непрерывным, и он отлично работает.

У меня все еще есть некоторые проблемы: как я могу перечислить активные репликации? Они не перечислены в localhost:5984/_replicator, а URL localhost:5984/_replicate принимает только запросы POST. Как я могу отменить непрерывную репликацию?

И наконец: какова цель иметь два разных URL, один localhost:5984/_replicate и один localhost:5984/_replicator?

2 голосов
/ 06 сентября 2011

Неправильный атрибут источника, необходимо добавить удаленную базу данных:

"source":  "http://other.host:5984/maintenance"

должно работать!

Ура, Бернхард

0 голосов
/ 09 апреля 2013

Когда я столкнулся с этой ошибкой:

[Пн, 12 сен. 2011 г. 16:45:05 GMT] [ошибка] [<0.4323.3>] Ошибка запуска репликации '045020f93f9da91e1e6b609754b32a15 + create_target' (документ 'обслуживание'): {неавторизовано, << "не авторизовано для доступа ведение базы данных ">>}. Повторная попытка за 160 секунд

На самом деле проблема была в том, что я указывал create_target: true в JSON, но база данных уже существовала. Я считаю, что ранее create_target было безопасно использовать, если цель уже существует, но не в _replicator / model.

0 голосов
/ 20 сентября 2011

_replicator - это новый формат, используемый для запоминания ваших репликаций после перезапуска CouchDB.При использовании этого формата вы можете отменить репликации, просто удалив документ репликации.

https://gist.github.com/832610

0 голосов
/ 06 сентября 2011

Я подозреваю, что вам нужно пройти аутентификацию на other.host (например, он может иметь require_valid_user = true), поэтому;

"source":"http://user:pass@other.host:5984/maintenance"

Скорее всего, вы захотите заблокировать доступ к базе данных _replicator как любой читательбазы данных может видеть этот пароль (используйте документ _security для его блокировки).

Подтверждение этого является активной темой обсуждения будущих выпусков CouchDB.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...