構成恒久書き込みを設定せずにトランザクションをディスクにフラッシュしようとしています。Xodusを使用してプログラムでトランザクションをディスクにフラッシュする方法はありますか?
特定のトランザクションだけをフラッシュするように命令することはできますか?
構成恒久書き込みを設定せずにトランザクションをディスクにフラッシュしようとしています。Xodusを使用してプログラムでトランザクションをディスクにフラッシュする方法はありますか?
特定のトランザクションだけをフラッシュするように命令することはできますか?
Environments APIと言えば、特定のトランザクションを永続的に設定することはできません。
回避策:トランザクションがフラッシュまたはコミットされた後にEnvironmentImpl#flushAndSync()
メソッドを手動で呼び出すことができます。この方法は、フラッシュされたデータをフラッシュせず、OSに変更されたファイルおよびディレクトリ構造を記憶装置に同期させる。しかし、あなたのトランザクションの後で、あなたが耐えたい、別のトランザクションを並行して実行することができるレースがあるかもしれません。EnvironmentImpl#flushAndSync()
メソッドが呼び出される前に、フラッシュ/コミットされます。レースを解決するには、コミットフックを使用することができます。与えられたTransaction txn
とEnvironmentImpl env
については、コミット以下のフックを定義します。
txn.setCommitHook(new Runnable() {
@Override
public void run() {
env.flushAndSync();
}
});
おそらく、それはAPIへEnvironmentImpl#flushAndSync()
方法を公開することは理にかなって。