先日、tracのDB定義をsqliteのコマンドで直接参照するというのを書いたのですが、この時、sqliteのコマンドラインツールが入っていなかったため、yumを使ってインストールした。

これが良くなかったようで、今朝からtracに接続できなくなっていた。なぜ今朝からかというと、金曜の夜に一度ブレーカが落ちてtracを運用しているサーバを再起動したので、httpサーバ(さらに詳しく言うとmod_python)の読むライブラリがその時から新しくなり、その後、誰もアクセスしなかったため、今朝気付いた訳です。
#ブレーカが落ちるオフィスというのもアレですが(苦笑)

現象はhttpdがメモリをどんどん食いつぶしてメモリーエラーで落ちる。落ちるまでの間ロードアベレージもCPU使用率もバンバン上がる。最初はHDDのせいか?メモリ不良か?とハードを疑った(ブレーカー落ちの不正終了もあったので)のですが、他のサービスは問題なく動いているため、とりあえず、yum updateしてみた。

すると、こっちも落ちる。

# yum update
 Setting up Update Process
 Setting up repositories
 Reading repository metadata in from local files
 Traceback (most recent call last):
   File "/usr/bin/yum", line 29, in ?
     yummain.main(sys.argv[1:])
   File "/usr/share/yum-cli/yummain.py", line 97, in main
     result, resultmsgs = do()
   File "/usr/share/yum-cli/cli.py", line 471, in doCommands
     return self.updatePkgs()
   File "/usr/share/yum-cli/cli.py", line 949, in updatePkgs
     self.doRepoSetup()
   File "/usr/share/yum-cli/cli.py", line 75, in doRepoSetup
     self.doSackSetup(thisrepo=thisrepo)
   File "__init__.py", line 260, in doSackSetup
   File "repos.py", line 287, in populateSack
   File "sqlitecache.py", line 96, in getPrimary
   File "sqlitecache.py", line 83, in _getbase
   File "sqlitecache.py", line 76, in getDatabase
   File "sqlitecache.py", line 49, in loadCache
   File "/var/tmp/python-sqlite-root//usr/lib/python2.3/site-packages/sqlite/main.py", line 244, in execute
 MemoryError

これでsqliteのバージョンが合ってない事に気付きました(遅い)最後に行った設定変更をまず疑うのが基本でした。

OSはCentOS 4.3なので、RPMを探すとsqlite-3.2.2-1.i386.rpmである。金曜に入ったsqliteは、sqlite-3.3.3-1.2。

# wget http://ftp.riken.jp/Linux/centos/4.3/os/i386/CentOS/RPMS/sqlite-3.2.2-1.i386.rpm
 # rpm -Uvh --oldpackage sqlite-3.2.2-1.i386.rpm

これで無事yumも起動、tracにもアクセスできるようになりました。ここのCentOSのバージョンも上げたいところだなぁ。