2011-12-14 32 views
37

Có một số khó khăn khi hiểu cách tiếp cận phù hợp tại đây.Trường hợp ngoại lệ AutoReconnect "đã thay đổi"

Tôi có kết nối với bản sao mongodb được đặt với ba thành viên (tiêu chuẩn phụ-nô lệ-nô lệ). Mọi thứ đều hoạt động tốt với kết nối khi tổng thể vẫn ổn định.

pymongo.Connection(['host1:27017','host2:27018','host3:27019']).database_test 

Đối với một số lý do, khi bản sao đặt bước đầu tiên xuống, điều này bắt đầu ném một ngoại lệ autoreconnect rằng không biến mất đi ngay cả sau khi một chính mới được bầu.

Bây giờ tôi biết rằng ngoại lệ này cần phải bị bắt và xử lý, rất có thể là do chờ đợi cho tiểu học mới được bầu. Vấn đề tôi đang gặp có vẻ là nó không quan tâm chút nào khi tiểu học mới được chọn. Điều này "tổng thể đã thay đổi" ngoại lệ chỉ tiếp tục đi lên.

In kết nối với __dict__ hiển thị tất cả ba máy chủ.

Tôi đã thử chuyển qua số replicaset kwarg vào kết nối, nhưng điều này xuất hiện dưới dạng đối số không mong muốn.

Có lý do nào khiến loại kết nối này không chỉ bắt đầu truy vấn đối với chính mới không?

EDIT:

Vấn đề này tương tự dường như bây giờ được biểu hiện trên máy chủ triển khai. Ngoại lệ autoreconnect được ném nếu master thay đổi và không bao giờ biến mất ngay cả sau khi một primary mới được bầu.

Pymongo là phiên bản 2.2 và phiên bản mongodb 2.0.2. Thay đổi cách thức kết nối được xác định trong mã pymongo (mongouri so với danh sách máy chủ) không có hiệu lực. Cách duy nhất để phục hồi dịch vụ là rs.stepDown() các máy chủ khác cho đến khi bản gốc chính trở thành chính một lần nữa.

+0

Bạn đang sử dụng phiên bản pymongo nào? Có một lỗi trong 1.9 hoặc 1.10, tôi không thể nhớ được lỗi nào, nó có thể thể hiện hành vi này ở đâu. Nó chắc chắn đã được sửa từ 1.11 và 2.0+ – dcrosta

+0

@dcrosta phiên bản 1.11 – DeaconDesperado

+0

Phiên bản MongoDB nào? 2.0.x có một vấn đề mà nếu bạn bước xuống chính nó không đóng nó kết nối. Điều này sẽ gây ra vấn đề bạn đang gặp phải với PyMongo. https://jira.mongodb.org/browse/SERVER-4405 –

Trả lời

2

Hành vi bạn mô tả là lỗi. Các hành động tốt nhất có thể là để đảm bảo có một lỗi đăng nhập cho nó và liên kết với nó từ câu hỏi của bạn. Vì câu hỏi đã gần một tuổi, tôi hy vọng rằng lỗi sẽ bị đóng (hãy kiểm tra jira.mongodb.org/browse/SERVER-4405 để xem liệu nó có được áp dụng hay không).

Nếu bạn nâng cấp lên MongoDB 2.2 hoặc mới hơn, sự cố sẽ biến mất.

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