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