TracError: Missing "youngest_rev" in cache metadata
ビルドマシンがディスクエラーでご臨終したため、再インストールする羽目に。
- Cent OS 5 を入れ直して、
- subversionを入れて、
- バックアップデータを復帰して
- 「/etc/httpd/conf.d/subversion.conf」を編集し、バックアップしてあったsvnプロジェクト?へのパスを通せばOKだった
- tracをインストール。
- CentOS & Tracが参考になる。
- tracのバックアップデータを復帰
- subversionと同じく「/etc/httpd/conf.d/trac.conf」を編集してパスを設定すれば認識された。
で、tracにアクセスするも、次のようなエラーになってこける。
Traceback (most recent call last): File "/usr/lib/python2.4/site-packages/trac/web/main.py", line 406, in dispatch_request dispatcher.dispatch(req) File "/usr/lib/python2.4/site-packages/trac/web/main.py", line 191, in dispatch chosen_handler = self._pre_process_request(req, chosen_handler) File "/usr/lib/python2.4/site-packages/trac/web/main.py", line 263, in _pre_process_request chosen_handler = f.pre_process_request(req, chosen_handler) File "/usr/lib/python2.4/site-packages/trac/versioncontrol/api.py", line 73, in pre_process_request self.get_repository(req.authname).sync() File "/usr/lib/python2.4/site-packages/trac/versioncontrol/cache.py", line 97, in sync raise TracError('Missing "youngest_rev" in cache metadata') TracError: Missing "youngest_rev" in cache metadata
Googleさんに聞くと以下のサイトがヒット。
→TracError: Missing "youngest_rev" in cache metadata
これの回答(→Re: TracError: Missing "youngest_rev" in cache metadata)に従って以下のコマンドを実行すると回復した。
$ sqlite3 <tracのリポジトリ>/db/trac.db "insert into system values ('youngest_rev', '')"
ということで、とりあえず参照はできるようになった。後は、ユーザー認証のやり方とか調べて設定すればtracは終わり(たぶん)。maven-proxyとかいうのとバックアップ環境の構築は明日だな。あー、メンドイ。
追記(2008-05-01)
空のyoungest_revを追加するだけではだめっぽい。tracの「browse source」で復旧以降にコミットしたソースを閲覧するとエラー(Internal Error)になる。
このときのtracのログは以下(→tracのログ設定についてはここが参考になる。)
2008-05-01 19:44:49,000 Trac[cache] DEBUG: cache metadata undefined (youngest_rev=u'') 2008-05-01 19:44:49,002 Trac[cache] INFO: repos rev [6815] != cached rev [None] 2008-05-01 19:44:49,056 Trac[main] WARNING: 500 Internal Error (No changeset 6814 in the repository)
table system record youngest_rev was empty, after i updated it to 1491 it worked properly. now it is at 1501 - the newest revision in our svn. the 1491 is last rev viewed by trac 0.10, and http://localhost/trac/changeset/1491 works ok.
とのことなので、systemテーブルのyoungest_revに最新のリビジョンを設定し復旧。
$ sqlite3 <tracのリポジトリ>/db/trac.db "update system set 'value'=6814 where name='youngest_rev'"