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
我同意金招。如果你正在做很多工作,你可能需要處理的唯一事情可能是等待一兩秒鐘,而Mongo重新選擇一個新的小學。不知道這是否需要,但需要考慮。根據我的經驗,選擇一個新的小學並不是即時的。 – ryan1234