mail-entry重複登録の原因判明?かも

一晩寝たら、なぜ重複登録されるか見当が付きました。それが当たっているとすると、まだ対策が完全ではないようです。

POPサーバの動作に詳しくないのですが、メールの削除は、正常にログアウト出来た場合に行われるようです(あってます?)。mail-entryは、すべてのメールを処理してからログアウトしますから、途中でエラーが出てしまうと正常にログアウトされず、削除コマンドは発行していても実際には削除されないことになる、と推測されます。

今回の対策は、一通だけのメールの時はうまくかいくぐってくれますが、複数になるとたぶん、だめです。

テスト1、テスト2というメールを送ったとします。このとき、テスト1は正常に処理できて、テスト2でリビルドもしくはpingでエラーが出たとします。MTオブジェクト側でタイムアウトすると、うまくエラーが拾えないようなので、mail-entryごと途中で終了してしまいます。この場合は、テスト2というエントリーも登録自体はされている可能性が非常に高いです。

つまり、最新エントリーのタイトルは「テスト2」になります。この状態で再度mail-entryが実行されると、前回正常に終了できていないので、POPサーバにはまだテスト1とテスト2というメールが残っています。mail-entryはまず「テスト1」を読み出し、最新エントリーのタイトルと照会しますが、タイトルは「テスト2」です。今登録しようとしているのは「テスト1」なので、問題ないとして登録されます。そして、次はテスト2が同じ理由で登録されます。

もしまたテスト2の時にエラーが出ると、延々とこれを繰り返すことになるので、驚くほどたくさんの重複エントリーが誕生することになります。おおおっ。


こうやって考えると、前回の修正はあまり意味がないものに・・・一応新たな対策案があるので、実際にとりかかりたいところですが、体調不良でしばらく無理かもしれませんです。すいませんです。申し訳ないです。

いいわけ:iBookにローカルサーバをたてて実験しているものですから、タイムアウトエラーっで出ないんです。検証作業が大変です・・・


コメント

zenback

このブログの人気の投稿

夢のようだ・・・

アップルのソフトウェア・アップデート画面の用語のわかりづらさはなんとかならないものか

DuraSpeedとかHuaweiの電源管理とか、やめてくれ