检查 Xodus 环境中的活动事务?

Check active Transactions within a Xodus environment?

检查 Xodus 环境中是否有活动事务的方法是什么?

所以如果你有这个:

Environment environment = environmentCache.get(databasePath);

您如何知道此环境中是否存在活动事务?

要在负载下安全关闭环境,请使用以下代码:

// on init stage:
env.getEnvironmentConfig().setEnvCloseForcedly(true);

// method that closes environment:
env.executeTransactionSafeTask(() -> {
    env.executeInExclusiveTransaction(t -> {
        env.close();
    });
});

代码被提取为 test。这种关闭环境的方式不是立即的,它会等到当前启动的事务完成,然后在独占事务中关闭环境,以确保不能并行启动其他写入事务。仍然可以有并行的read-only个交易,但显然可以忽略它们。

将代码公开为远程控制环境的远程方法。调用该方法后,远程端可以立即尝试打开同一位置上方的环境,锁定超时时间(EnvironmentConfig.setLogLockTimeout(..))相当长(EnvironmentConfig.setLogLockTimeout(..)),比如 1 分钟。