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

What is the proper way of safely shutdown the Xodus environment?

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

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

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

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

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

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

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

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

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