test 7:
念のため、実行前にデータディレクトリをバックアップしてほしい。
Db::open/Db::close「Bad file descriptor」例外の回避策だ。初期ブロックダウンロードも高速化される可能性がある。回避策は、データベースハンドルを開いたままプログラムの実行中ずっと保持しておくことで、実際これはより一般的なやり方でもある。常に閉じたり開いたりしなければ、エラーが発生する機会がなくなるはずだ。
唯一の例外は wallet.dat で、書き込み完了後にトランザクションログを dat ファイルにフラッシュするために閉じるようにしている。これにより、dat ファイルが単体で有効になる。Bitcoin の実行中に誰かがバックアップを取った場合、データベースのトランザクションログなしでもそれ自体で有効な wallet.dat を取得できる。
これはデータベース処理の再構成なので、新たなデッドロックが見つかるかもしれない。通常、デッドロックが発生すると、UI の再描画が止まるか、まだ Generating と表示されているにもかかわらず CPU を使用しなくなる。