tracでnotificationメールが発信されない
という現象。環境は別サーバから引っ越してきたもので、0.1.3あたりから1.2.1へ移行したもの。
現象としては
- チケットを新規作成したときや、変更したときにnotificationメールが発信されない。
- チケット件数は12000件ほどだが、全件削除しても現象は解消されない。
- 初めてログインするユーザでは現象がおきない。
- tracインスタンスを新規に作成、conf/trac.iniをコピーして環境を作成すると現象は起きない。
- 上記の環境に db/trac.db をコピーすると現象が発生する。
ってなことで、configurationの問題ではなく、dbで保持している情報の問題だと推測。
tracのDBには以下のようなテーブルがあります。
attachment notify_subscription session_attribute auth_cookie notify_watch system cache permission ticket component report ticket_change enum repository ticket_custom milestone revision version node_change session wiki
チケットやwikiの実体(wiki,ticket,ticket_custom)は関係ない。そうするとユーザの情報だからsessionやsession_attributeが怪しい。
初めて利用するユーザでは現象が起きないことから、移行時、あるいはバージョンの違いでこのあたりの情報が正常にselect、insertできてないのではと推測。
ということで全件削除。
$ sqlite3 ./trac.db sqlite> delete from session ; sqlite> delete from session_attribute ; sqlite> vacuum ;
最後のvacuumはおまけ。
これで現象が解消しました。