如今,在简单的代码片段如下,如果我的查询返回的结果, 一切正常。查询后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。