如今,在簡單的代碼片段如下,如果我的查詢返回的結果, 一切正常。查詢後MongoDB的插座不同的是不返回任何結果
如果查詢返回沒有結果,那麼所有東西仍然如預期的那樣, 異常被拋出並被捕獲。
此查詢後,如果我嘗試執行另一個查詢時, 聲明
dbConn->query(collection, queryObj)
拋出一個mongo::SocketException
。而打印的信息是:socket exception [SEND_ERROR] for 127.0.0.1:27017 // 9001 socket exception [2] server [127.0.0.1:27017]
從這一個上,下面的查詢都會拋出同樣的異常,有不同的消息:
socket exception [FAILED_STATE] for localhost:27017 // 9001 socket exception [5] server [localhost:27017]
我也打印出來的錯誤代碼串,他們都是「未知錯誤」。
如果我重新啓動的過程中,它重置,因此我假設的連接莫名其妙地損壞。目前沒有其他人訪問共享的ptr。蒙戈守護進程運行正常,並沒有什麼不尋常的MongoDB中的日誌。
我最大的問題是:爲什麼會發生?
的片段:
try
{
// Some initialzation here..
// dbConn is a boost::shared_ptr<mongo::DBClientConnection>
std::auto_ptr<mongo::DBClientCursor> cursor = dbConn->query(collection, queryObj);
if (!cursor->more())
{
throw Exception();
}
}
catch(const Exception&)
{
}
catch(const mongo::SocketException& e)
{
std::cout << ex.what() << "//" << ex.toString() << std::endl;
}
MongoDB的C++驅動程序版本是2.3.2。