ZODB の pack でエラー
2004年1月18日14:19
zope
うーん

下記のようなエラーが出てしまいました。とりあえず報告のみですが。環境は Zope 2.6.3 + rename パッチ, python 2.1.3 です。

Zope has encountered an error while publishing this resource.

Error Type: CorruptedError
Error Value: /var/zope26/var/Data.fs:7848055:time-stamp reduction: 032933760daf50bb <= 03524d3118b6b077

Traceback (innermost last):

  • Module ZPublisher.Publish, line 98, in publish
  • Module ZPublisher.mapply, line 88, in mapply
  • Module ZPublisher.Publish, line 39, in call_object
  • Module App.ApplicationManager, line 354, in manage_pack
  • Module ZODB.DB, line 526, in pack
  • Module ZODB.FileStorage, line 1503, in pack
  • Module ZODB.fspack, line 680, in pack
  • Module ZODB.fspack, line 464, in findReachable
  • Module ZODB.fspack, line 478, in buildPackIndex
  • Module ZODB.fspack, line 175, in checkTxn
  • Module ZODB.fspack, line 170, in fail

owa #e8faefa 2004年1月18日15:07

fstest.py を使って Data.fs をチェックしたところ Data.fs time-stamp reduction at 7848055: 0x032933760daf50bb <= 0x03524d3118b6b077 と同じエラーがでましたがfsrecover.py を使って修復したら直りました。pack もできました。
$ su
# cd /usr/share/zope26/lib/python/ZODB
# python2.1 ./fsrecover.py /var/zope26/var/Data.fs Data.fs
0 . 1 . 2 . 3 . 4 . 5 . 6
error reading txn header: time-stamp reducation
...
25344 bytes removed during recovery
と云うことで若干データが無くなったかもしれませんが、大事に至らなくて良かった。

後から思うと ExternalEditor 使っていたので閉じ忘れがあったような気がします。オブジェクトをロックしている時にパックしてしまったせいかなー。再現して見る気はありませんが。