mongodb — проблема сценария аварийного переключения Replaaset All Slaves с драйвером mongo 2.2.3 c ++

Я использую драйвер С ++ 2.2.3 для подключения к реплике Монго с помощью ScopedDbConnection. При тестировании по сценарию отработки отказа приложение просто аварийно завершает работу и не восстанавливается.

Когда все подчиненные устройства отключаются, он не может записать данные в мастер, что очевидно, но перед следующей операцией монго я снова включаю подчиненное устройство, и оно не может восстановиться даже после.

Тем не менее, тот же сценарий работает хорошо для mongo 2.0 и cpp driver 2.0 со следующим кодом. Он восстанавливает ом после следующего запуска после того, как я поставил раба обратно.

mongo::DBClientBase * MongoKeyValueDataStore::getDbConnection(mongo::ScopedDbConnection * m_scopedDbConnection) {
DBClientBase * clientDbConnection;
try {

clientDbConnection =  m_scopedDbConnection->get();
// Following is necessary to check and reconnect if server/replicaset came back up
// works with mongo v2.0 and 2.0 cpp driver but mongo v2.23 and 2.2.3 cpp driver always returns true for isFailed() method
if (clientDbConnection && clientDbConnection->isFailed()) {
m_scopedDbConnection->kill();
return NULL;
}
return clientDbConnection;
}

Заранее благодарю за любую помощь.

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]