2016-11-29 5 views
7

Когда я пытаюсь реплицировать удаленный couchdb (на ubuntu 14.04- 64 bit) с моим местным pouchdb, я воспользуюсь этой странной ошибкой. My couchdb проксирован через nginx и работает на https. Трафик от клиента до nginx - это ssl, а nginx to couchdb - простой http. Запросы Cors разрешены в couchdb. Конфигурация Nginx наиболее похожа на couchdb recommended. Синхронизация из базы данных работает нормально, но становится ниже ошибок при отладке через chrome Version 54.0.2840.100 (64-разрядная версия).Ошибка репликации PouchDB при репликации

enter image description here

Ниже приводится полный трассировки стека ошибки.

raven.min.js:2 Error: There was a problem getting docs. at finishBatch (http://localhost:8100/lib/pouchdb/dist/pouchdb.js:6410:13) at processQueue (http://localhost:8100/lib/ionic/js/ionic.bundle.js:27879:28) at http://localhost:8100/lib/ionic/js/ionic.bundle.js:27895:27 at Scope.$eval (http://localhost:8100/lib/ionic/js/ionic.bundle.js:29158:28) at Scope.$digest (http://localhost:8100/lib/ionic/js/ionic.bundle.js:28969:31) at http://localhost:8100/lib/ionic/js/ionic.bundle.js:29197:26 at completeOutstandingRequest (http://localhost:8100/lib/ionic/js/ionic.bundle.js:18706:10) at http://localhost:8100/lib/ionic/js/ionic.bundle.js:18978:7 at d (http://localhost:8100/lib/raven-js/dist/raven.min.js:2:4308) undefineda.(anonymous function) @ raven.min.js:2(anonymous function) @ ionic.bundle.js:25642(anonymous function) @ ionic.bundle.js:22421(anonymous function) @ angular.min.js:2processQueue @ ionic.bundle.js:27887(anonymous function) @ ionic.bundle.js:27895$eval @ ionic.bundle.js:29158$digest @ ionic.bundle.js:28969(anonymous function) @ ionic.bundle.js:29197completeOutstandingRequest @ ionic.bundle.js:18706(anonymous function) @ ionic.bundle.js:18978d @ raven.min.js:2 raven.min.js:2 Paused in lessondb replicate Error: There was a problem getting docs. at finishBatch (http://localhost:8100/lib/pouchdb/dist/pouchdb.js:6410:13) at processQueue (http://localhost:8100/lib/ionic/js/ionic.bundle.js:27879:28) at http://localhost:8100/lib/ionic/js/ionic.bundle.js:27895:27 at Scope.$eval (http://localhost:8100/lib/ionic/js/ionic.bundle.js:29158:28) at Scope.$digest (http://localhost:8100/lib/ionic/js/ionic.bundle.js:28969:31) at http://localhost:8100/lib/ionic/js/ionic.bundle.js:29197:26 at completeOutstandingRequest (http://localhost:8100/lib/ionic/js/ionic.bundle.js:18706:10) at http://localhost:8100/lib/ionic/js/ionic.bundle.js:18978:7 at d (http://localhost:8100/lib/raven-js/dist/raven.min.js:2:4308)

Сетевые журналы в хромированной показывают, что некоторые запросы аннулируются

enter image description here

Я использую CouchDB версию - 1.6.1 и pouchdb версия - 5.3.2. Я использую следующую команду, чтобы скопировать DBS:

myDB.replicate.from(remote_db_url,{ live: true, retry: true, heartbeat: false }) Кроме того, было бы замечательно, если бы кто-то может пролить некоторый свет на сердцебиения параметра.

ответ

0

Примечание: Я не могу решить описанную вами ошибку. Может быть, полная трассировка стека, а не скриншот может помочь ...

Но я попытаюсь пролить свет на параметр сердцебиения: Чтение docs уже немного помогает. Смотрите дополнительные параметры для метода replicate:

options.heartbeat: Настройка сердцебиение, поддерживаемую CouchDB, который держит связь изменения в живых.

Итак, давайте посмотрим на CouchDB's docs, чтобы увидеть, что делает этот параметр:

Networks являются хитрым зверем, а иногда вы не знаете, нет ли каких-либо изменений, приезжающие или сетевое подключение пошел несвежий. Если вы добавите еще один параметр запроса, heartbeat = N, где N - число, CouchDB отправит вам символ новой строки каждые N миллисекунд. Пока вы получаете символы новой строки, вы знаете, что новых уведомлений об изменениях нет, но CouchDB все еще готов отправить вам следующий, когда это произойдет.

Так в основном это, кажется, механизм опроса, который посылает сообщение (F.E. переводом строки) каждые п миллисекунд (где п значение heartbeat указывается), чтобы убедиться, что соединение между двумя базами данных до сих пор работает.

Установка значения false отключит этот механизм.


Относительно какое значение можно использовать для этого параметра: PouchDB docs дополнительно состояния, что метод changes имеет аналогичный параметр, описанный как это:

options.heartbeat: Только для HTTP адаптера , время в миллисекундах для сервера, чтобы дать пульс, чтобы длинные соединения открывались. По умолчанию 10000 (10 секунд), используйте false, чтобы отключить значение по умолчанию.

+0

Не следует ли использовать биение сердца для запросов https? – kartik

+1

Я добавил полную ошибку стека ошибки, как вы упомянули – kartik