2016-11-29 20 views
7

Khi tôi cố gắng sao chép một từ xa couchdb (trên ubuntu 14.04- 64 bit) với địa phương pouchdb, tôi mã hóa lỗi lạ này. couchdb của tôi được ủy quyền qua nginx và chạy trên https. Lưu lượng từ client đến nginx là ssl trong khi nginx đến couchdb là http đơn giản. Yêu cầu của Cors được bật trong couchdb. Cấu hình Nginx tương tự nhất với couchdb recommended. Đồng bộ hóa từ cơ sở dữ liệu đang hoạt động tốt tuy nhiên nhận được lỗi dưới đây khi gỡ lỗi thông qua chrome Phiên bản 54.0.2840.100 (64-bit).PouchDB Replication ném lỗi khi nhân rộng

enter image description here

Sau đây là dấu vết ngăn xếp đầy đủ của lỗi.

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)

Các bản ghi mạng trong chrome cho thấy rằng một số yêu cầu hủy

enter image description here

Tôi đang sử dụng phiên bản couchdb - 1.6.1 và pouchdb phiên bản - 5.3.2. Tôi sử dụng lệnh sau để sao chép dbs:

myDB.replicate.from(remote_db_url,{ live: true, retry: true, heartbeat: false }) Cũng sẽ tuyệt vời nếu ai đó có thể làm sáng tỏ một số tham số nhịp tim.

Trả lời

0

Lưu ý: Tôi không thể giải quyết lỗi bạn mô tả. Có thể dấu vết ngăn xếp đầy đủ thay vì ảnh chụp màn hình có thể giúp ...

Nhưng tôi sẽ cố gắng làm sáng tỏ thông số về nhịp tim: Đọc docs đã giúp một chút. Xem các tùy chọn nâng cao cho phương pháp replicate:

options.heartbeat: Định cấu hình nhịp tim được CouchDB hỗ trợ giúp giữ kết nối thay đổi luôn hoạt động.

Vì vậy, chúng ta hãy nhìn vào CouchDB's docs để xem những gì tham số này không:

Networks là một con quái vật khó khăn, và đôi khi bạn không biết liệu không có thay đổi sắp tới hoặc kết nối mạng của bạn đã cũ. Nếu bạn thêm một tham số truy vấn khác, nhịp tim = N, trong đó N là một số, CouchDB sẽ gửi cho bạn một ký tự dòng mới mỗi N mili giây. Miễn là bạn đang nhận được ký tự dòng mới, bạn biết không có thông báo thay đổi mới, nhưng CouchDB vẫn sẵn sàng gửi cho bạn thông báo tiếp theo khi nó xảy ra.

Vì vậy, về cơ bản nó có vẻ là một cơ chế bỏ phiếu đó gửi một thông điệp (f.e. một dòng mới) mỗi n mili giây (trong đó n là heartbeat giá trị mà bạn chỉ định) để đảm bảo sự kết nối giữa hai cơ sở dữ liệu vẫn còn làm việc.

Đặt giá trị thành false sẽ tắt cơ chế này.


Về mà giá trị có thể được sử dụng cho thông số này: Các PouchDB docs thêm trạng thái, rằng phương pháp changes có một tham số tương tự được mô tả như thế này:

options.heartbeat: Đối với chỉ bộ chuyển đổi http , thời gian tính bằng mili giây cho máy chủ để cho nhịp tim giữ kết nối dài mở. Mặc định là 10000 (10 giây), sử dụng sai để tắt mặc định.

+0

Chúng ta có nên sử dụng nhịp tim cho các yêu cầu https không? – kartik

+1

Tôi đã thêm dấu vết ngăn xếp đầy đủ của lỗi như bạn đã đề cập – kartik

Các vấn đề liên quan