使用DB.requestDone()强制数据库连接回到连接池

时间:2014-04-18 18:56:13

标签: java mongodb grails-2.0

我有一个grails应用程序,它使用石英作业自动使用外部服务提供的数据来扩充文档。 quartz作业使用非事务性服务来查询和更新mongodb中的文档。实际查询和更新使用mongo的本机驱动程序(无GORM)。一旦所有连接都被消耗,quartz作业和Service不会返回连接池的数据库连接,从而导致错误“连接等待超时”。

我可以通过在生成的线程中查询和更新后添加对DB.requestDone()的调用来解决问题。我不确定为此目的使用requestDone的后果。

在没有调用requestStart的情况下调用requestDone会产生负面影响吗?

requestStart / requestDone是否存在任何线程问题。例如,当调用requestDone时,如果另一个线程正在查询Mongo,会发生什么?

是否有更好的方法可以确保将数据库连接返回到连接池?

仅供参考,我尝试添加cursor.close(),但这并没有解决问题。

0 个答案:

没有答案