Mongo.getDatabaseNames()偶尔会抛出CommandFailureException

时间:2014-09-23 06:20:25

标签: mongodb

我们遇到了一些问题,我们的mongo连接无法让我们从数据库中获取数据库名称。

我们称之为方法:

com.mongodb.Mongo.getDatabaseNames()

100次中有1次会引发以下异常:

Caused by: com.mongodb.CommandFailureException: { "serverUsed" : "localhost:27017" , 
        "errmsg" : "exception: can't open database in a read lock. if db was just closed, consider retrying the query. might otherwise indicate an internal error" , "code" : 15927 , "ok" : 0.0}
    at com.mongodb.CommandResult.getException(CommandResult.java:76)
    at com.mongodb.CommandResult.throwOnError(CommandResult.java:131)
    at com.mongodb.Mongo.getDatabaseNames(Mongo.java:397)

查看mongo代码,数据库是内部管理数据库

public List<String> getDatabaseNames(){

  BasicDBObject cmd = new BasicDBObject();
  cmd.put("listDatabases", 1);

>>CommandResult res = getDB(ADMIN_DATABASE_NAME).command(cmd, getOptions());
  res.throwOnError();

此数据库未被删除,但此时还有其他几个可以删除的数据库。

还有其他人有这个问题吗?

0 个答案:

没有答案