programing

AutoReconnect 예외 "마스터가 변경되었습니다"

javamemo 2023. 5. 10. 20:10
반응형

AutoReconnect 예외 "마스터가 변경되었습니다"

올바른 접근 방식을 이해하는 데 문제가 있습니다.

구성원이 세 명인 mongodb 복제본 세트(표준 마스터-슬레이브-슬레이브)에 연결되어 있습니다.마스터가 일관성을 유지할 때 연결 상태에서 모든 것이 정상적으로 작동합니다.

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

어떤 이유로 복제본이 기본 단계를 설정하면 새 기본 단계가 선택된 후에도 사라지지 않는 자동 연결 예외가 발생하기 시작합니다.

이제 저는 이 예외를 포착하고 처리해야 한다는 것을 알고 있으며, 아마도 새로운 경선이 선출되기를 기다리는 것으로 알고 있습니다.제가 안고 있는 문제는 일단 새로운 경선이 정해지면 전혀 개의치 않는 것 같습니다.이 "마스터가 변경되었습니다" 예외가 계속 발생합니다.

연결을 인쇄하는 중__dict__에는 세 개의 호스트가 모두 나와 있습니다.

나는 패스를 시도했습니다.replicaset연결에 대해 왜곡하지만, 이것은 예상치 못한 주장으로 나옵니다.

이런 종류의 연결이 새로운 프라이머리에 대해 쿼리를 시작하지 않는 이유가 있습니까?

편집:

이와 같은 문제가 현재 배포 서버에서 나타나고 있는 것으로 보입니다.마스터가 전혀 변경되지 않고 새 기본이 선택된 후에도 사라지지 않는 경우 자동 연결 예외가 발생합니다.

Pymongo는 버전 2.2 및 mongodb 버전 2.0.2입니다.pymongo 코드(mongouri 대 호스트 목록)에서 연결이 정의되는 방식을 변경해도 영향을 받지 않습니다.서비스를 되살리는 유일한 방법은rs.stepDown()원래 마스터가 다시 기본 마스터가 될 때까지 다른 호스트.

당신이 설명하는 행동은 버그입니다.가능한 최선의 방법은 버그가 기록되어 있는지 확인하고 질문에서 버그에 연결하는 것입니다.질문이 거의 1년이 지났기 때문에 버그가 닫힐 것으로 예상됩니다(해당 여부는 jira.mongodb.org/browse/SERVER-4405 에서 확인하십시오).

MongoDB 2.2 이상으로 업그레이드하면 문제가 해결됩니다.

언급URL : https://stackoverflow.com/questions/8506753/autoreconnect-exception-master-has-changed

반응형