Berkeley DBが、お亡くなりに

SubversionTracで、プロジェクト管理しているのですが、今日ひとしきりソースをいじった後で、コミットしようとしたらエラーが出るではありませんか・・・

恐る恐る、Tracを見てみると

Oops…
Trac detected an internal error:

なんてこったい、そのうちでくわすだろうと思っていたが、とうとう私のところにもやってきたではないですが・・・
しかもこの忙しいときに・・・

バックアップでダンプを取っているシェルの実行ログを見てみると

svn: Berkeley DB error while opening environment for filesystem /var/svn/repos/db:
DB_RUNRECOVERY: Fatal error, run database recovery
svn: bdb: PANIC: fatal region error detected; run recovery

なんだか、リカバリーをせんといかんようだ、リカバリしてみる。

# db_recover -c -h /var/svn/repos/db
# 

ん?終わったのかい?

Tracをのぞいてみる。
おおぉ!!見れるジャン、直ったのかしら?
で他のページを見ようとする。

Oops…
Trac detected an internal error:

おっとっと、なんてこったい、そういうこったい。
だめだったい!!


何度もやってみたけど、リカバリをすると、そのあとの1度目だけはアクセスが大丈夫、2回目以降は駄目になるくさい

これは、一筋縄ではいかないのだろうか・・・

めんどくさそうなので、ダンプから戻しますか・・・(よかった、バックアップを世代で取るようにしていて・・・)

# service httpd stop
# svnadmin create /var/svn/repos
# svnadmin load /var/svn/repos < backup.dmp
<<< オリジナルのリビジョン xxx に基づき、新しいトランザクションを開始しました

------- リビジョン xxx をコミットしました >>>

# chown -R apache.apache /var/svn/repos
# service httpd start
# 

ようし、バックアップを戻したぞっと

Tracをのぞいてみる。
直ったいw


P.S.
今回は助かった、でもあまり使わないリポジトリが壊れた場合、今のバックアップ方法じゃ世代がなくなることに気付く!!
朝昼晩の3回ダンプを取って、かつ過去3世代を残すようにしている。
これについては、また今度考えるとしよう。いまはそれどころでないくらいやることが溜まっている^^;