2017-04-04 7 views

答えて

1

Environments APIと言えば、特定のトランザクションを永続的に設定することはできません。

回避策:トランザクションがフラッシュまたはコミットされた後にEnvironmentImpl#flushAndSync()メソッドを手動で呼び出すことができます。この方法は、フラッシュされたデータをフラッシュせず、OSに変更されたファイルおよびディレクトリ構造を記憶装置に同期させる。しかし、あなたのトランザクションの後で、あなたが耐えたい、別のトランザクションを並行して実行することができるレースがあるかもしれません。EnvironmentImpl#flushAndSync()メソッドが呼び出される前に、フラッシュ/コミットされます。レースを解決するには、コミットフックを使用することができます。与えられたTransaction txnEnvironmentImpl envについては、コミット以下のフックを定義します。

txn.setCommitHook(new Runnable() { 
    @Override 
    public void run() { 
     env.flushAndSync(); 
    } 
}); 

おそらく、それはAPIへEnvironmentImpl#flushAndSync()方法を公開することは理にかなって。

関連する問題