Berkeley DBが壊れた

軽いデータベースが好きなプログラマとしては,昔からバークレーDBは好きな方なのですが,ときたま壊れます.

bdb: PANIC: DB_RUNRECOVERY: Fatal error, run database recovery

今回は,RubyからBerkeley DBのライブラリを通してBDBを使っていて,システムの運営中に発生しました.
http://moulon.inra.fr/ruby/bdb.html
一応,このライブラリにもBDB::RECOVERなどのフラグがあるのですが,試してみても「トランザクション中以外では使えません」と出て,ダメです.確かにトランザクションは使っていませんでした.
でも,BDBのこの手のエラーは大抵は簡単に解決可能で,今回の場合はDBファイルと同じディレクトリに0バイトのアンダースコアで始まるファイル名の,作った記憶の無いファイルがありました.で,恐らくロックファイルの類だろうと思って削除すると,システムは無事,再稼動しました.

他にも困っている人がいるんだろうなぁと,軽く検索してみますと...
ドメインパーキング

db_recover よ。あんたもパニックかもしれんが俺はもっとパニックだぞ!!

に,笑わせてもらいました.
そう,長い歴史を誇るBerkeley DBはかなりロバストで,無茶に復旧を試みると大抵うまくいくものです.
とは言え,単一ファイルベースなので,ファイルサイズにだけ気をつけないとなりません.