0
이 간단한 프로그램에서 기본 노드가 손상되면 복제 세트에 다시 연결하려고합니다. 하지만 작동하지 않습니다 : 기본 노드가 충돌하면이 프로그램은 출력없이 즉시 종료되고 141을 반환합니다. 그 이유는 모르겠습니다. 복제 세트에 다시 연결하는 올바른 방법은 무엇입니까?기본 노드가 손상되었을 때 복제 세트에 다시 연결하는 방법은 무엇입니까?
#include <stdio.h>
#include <mongo.h>
int insertVal(mongo *conn, int val) {
bson op[1];
bson_init(op);
bson_append_int(op, "val", val);
bson_finish(op);
int status = mongo_insert(conn, "test.vals", op, NULL);
bson_destroy(op);
return status;
}
int main()
{
mongo conn[1];
mongo_replset_init(conn, "test");
mongo_replset_add_seed(conn, "localhost", 27017);
mongo_replset_add_seed(conn, "localhost", 27018);
mongo_replset_add_seed(conn, "localhost", 27019);
int status = mongo_replset_connect(conn);
if (status != MONGO_OK) {
return 1;
}
for (int i = 0; i < 1000 * 1000; ++i) {
status = insertVal(conn, i);
if (status != MONGO_OK) {
printf("%d\n", status);
--i;
mongo_reconnect(conn);
}
}
mongo_destroy(conn);
return 0;
}
'mongo_reconnect (conn)'를 제거하려고했지만 문제는 변경되지 않았습니다. – user805627
복제본 설정 상태를 전혀 확인할 필요가 없다고 생각합니다. mongodb이 자체적으로 돌볼 것입니다. – coderLMN
나는 Jinzhao에 동의합니다. Mongo가 새로운 기본을 다시 선출하는 동안 당신이 많은 일을하고 있었다면 당신이 처리 할 필요가있는 유일한 것은 아마도 2 ~ 2를 기다릴 것입니다. 그것이 필요한지는 확실하지 않지만 생각할 부분은 있습니다. 새로운 경험을 선발 한 경험이있는 순간이 아닙니다. – ryan1234