检查 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 分钟。
检查 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 分钟。