安全关闭Xodus环境的正确方法是什么?

时间:2019-06-14 14:14:18

标签: xodus

我需要一种关闭Xodus环境的方法,以便

  • 它等待所有线程中的所有写入事务完成(或者可以选择在超时后终止)。
  • 它阻止启动新交易(或抛出异常作为选择)。
  • 安全地关闭环境。

到目前为止,我们尝试了类似的方法

if (env.isOpen()) {            
    env.clear();
    env.close();
}

但是我不确定它做的是否正确,我仍然会不时从env.close()抛出异常。那么正确的方法是什么?

1 个答案:

答案 0 :(得分:1)

首先,请注意Environment#clear()只会清除您环境中的所有数据。

次要:您不必在关闭环境之前检查环境是否处于打开状态。

如果您不太关心应用程序状态,则可以在创建环境时设置exodus.env.closeForcedly选项:

Environment env = Environments.newInstance("db path", new EnvironmentConfig().setEnvCloseForcedly(true));

在这种情况下,close()方法会在日志中报告交易时尚未完成的数量,并且无论如何都会关闭环境。