Forums: users (Thread #12065)

--export-spamの実行でエラーが出ます。 (2006-08-16 10:25 by Anonymous #24404)

FreeBSD4.11でbsfilterを利用しています。
インストールは/usr/ports/から行い、以下のパッケージがインストールされました。
ruby-1.8.4_9,1
ruby18-gdbm-1.8.4,1
ja-ruby18-kakasi-020928
gdbm-1.8.3_2
ja-kakasi-2.3.4
gmake-3.81_1
darts-0.3
libiconv-1.9.2_2
gettext-0.14.5_2
libtool-1.5.22_2
expat-2.0.0_1
bsfilter-1.0.14

configは
jtokenizer kakasi
spam-cutoff 0.65
db gdbm
となっています。

--export-spamを実行すると以下のエラーメッセージが出ます。
--export-cleanではエラーは発生しません。


/usr/local/bin/bsfilter:673:in `+': can't convert nil into String (TypeError)
from /usr/local/bin/bsfilter:673:in `value'
from /usr/local/bin/bsfilter:491:in `export'
from /usr/local/bin/bsfilter:631:in `each_ct'
from /usr/local/bin/bsfilter:629:in `each_ct'
from /usr/local/bin/bsfilter:490:in `export'
from /usr/local/bin/bsfilter:2767:in `do_export'
from /usr/local/bin/bsfilter:2765:in `do_export'
from /usr/local/bin/bsfilter:344:in `open_wo'
from /usr/local/bin/bsfilter:2764:in `do_export'
from /usr/local/bin/bsfilter:3320:in `run'
from /usr/local/bin/bsfilter:3392

対応方法を教えていただけませんか?
よろしくお願いします。

Reply to #24404×

You can not use Wiki syntax
You are not logged in. To discriminate your posts from the rest, you need to pick a nickname. (The uniqueness of nickname is not reserved. It is possible that someone else could use the exactly same nickname. If you want assurance of your identity, you are recommended to login before posting.) Login

RE: --export-spamの実行でエラーが出ます。 (2006-08-19 21:24 by nabeken #24458)

revision 1.79.4.1 を commit しましたので、試してみて下さい。

データベースに想定外のキーがあるようです。
なぜこのようになっているのか不明なのですが、参照する際のチェックを追加してみました。テストは出来てませんが、異常終了はしなくなったはずです。
Reply to #24404

Reply to #24458×

You can not use Wiki syntax
You are not logged in. To discriminate your posts from the rest, you need to pick a nickname. (The uniqueness of nickname is not reserved. It is possible that someone else could use the exactly same nickname. If you want assurance of your identity, you are recommended to login before posting.) Login

RE: --export-spamの実行でエラーが出ます。 (2006-08-21 15:27 by Anonymous #24486)

対応ありがとうございます。
早速試してみます。

実は、数日前に「bsfilter:696: [BUG] Segmentation fault」の質問を行わせて頂いています。
その際にgdbmの破損との事でしたが、今回は破損まで行かないけれども不具合が発生したことになると思います。

立て続けにdbの不具合が発生していますので、bsfilterとの相性で破損の確立が一番低いdbを教えていただけますでしょうか。

gdbmを採用した理由はFreeBSDのportsでインストールした際に出来たbsfilter.confがgdbmを指定しただけの理由からです。

よろしくお願いします。
Reply to #24458

Reply to #24486×

You can not use Wiki syntax
You are not logged in. To discriminate your posts from the rest, you need to pick a nickname. (The uniqueness of nickname is not reserved. It is possible that someone else could use the exactly same nickname. If you want assurance of your identity, you are recommended to login before posting.) Login

RE: --export-spamの実行でエラーが出ます。 (2006-08-23 01:00 by nabeken #24517)

どのdbで問題が少ないか、という情報はもっていません。
自分ではsdbmを使用しています。
Reply to #24486

Reply to #24517×

You can not use Wiki syntax
You are not logged in. To discriminate your posts from the rest, you need to pick a nickname. (The uniqueness of nickname is not reserved. It is possible that someone else could use the exactly same nickname. If you want assurance of your identity, you are recommended to login before posting.) Login

RE: --export-spamの実行でエラーが出ます。 (2006-08-23 15:37 by Anonymous #24522)

解答ありがとうございます。

configをsdbmに変更し、始めから運用をやり直してみます。

gdbmの不具合は2週間ほどの運用で出ましたので、2~3週間後に状況報告をさせていただきます。

Reply to #24517

Reply to #24522×

You can not use Wiki syntax
You are not logged in. To discriminate your posts from the rest, you need to pick a nickname. (The uniqueness of nickname is not reserved. It is possible that someone else could use the exactly same nickname. If you want assurance of your identity, you are recommended to login before posting.) Login

RE: --export-spamの実行でエラーが出ます。 (2006-09-06 09:27 by Anonymous #24726)

データベースをsdbmでしばらく運用を続けてきました。
--export-spamの実行でエラーは出ませんが、--export-spamを実行したときの登録数が突然半分くらいに減りました。(26万件→14万件)

これは、不具合が継続していることになるのでしょうか?

作業中に気が付いたのですが、現象を確認するためにコンソールから頻繁に--export-spamを実施していました。

その際に作成されるロックファイルについて確認させてください。

現在のシステムはqmail+vpopmailにより行っています。
受信したメールをユーザーのメールボックスへ配信するプログラムのユーザー権限はvpopmailというユーザーに固定になっています。

ユーザーを仮にhogehogeとしますがコンソールから--export-spamを実行するとオーナーがhogehogeでロックファイルが作成されます。
このときにメールが届くとvpopmailの配信プログラムがオーナーをvpopmailでロックファイルを作成しに行くことになると思います。

そのためにファイルのロック処理がうまく動作していないと言うことは考えられないでしょうか?

憶測で申し訳ありませんがご意見を伺えればと思います。
よろしくお願いします。

Reply to #24522

Reply to #24726×

You can not use Wiki syntax
You are not logged in. To discriminate your posts from the rest, you need to pick a nickname. (The uniqueness of nickname is not reserved. It is possible that someone else could use the exactly same nickname. If you want assurance of your identity, you are recommended to login before posting.) Login

RE: --export-spamの実行でエラーが出ます。 (2006-09-07 00:30 by nabeken #24750)

データベースが無限に大きくなるのを防ぐ仕組みを入れてあります。デフォルトの場合、10000通を学習すると、tokenの登場回数に0.8を掛け、登場回数が1未満になったtokenはデータベースから削除し、8000通を学習したことにする、という処理が行われます。この処理によって、登録数が減った可能性があります。

ロックですが、ownerの違いについてはよく分かりませんす。

NFSを使用している場合は要注意です。(ロックできなかった話を聞くので)
bsfilterはFile#flockを使用しており、実体はflock(2)のようです。

ただ、ロックできなかったとしても、データベースを書き込むプロセスが一つだけなら(MDAがbsfilterの同時起動を避けているとかで)、データベースの破壊という症状にはならないようにも思います。
Reply to #24726

Reply to #24750×

You can not use Wiki syntax
You are not logged in. To discriminate your posts from the rest, you need to pick a nickname. (The uniqueness of nickname is not reserved. It is possible that someone else could use the exactly same nickname. If you want assurance of your identity, you are recommended to login before posting.) Login

RE: --export-spamの実行でエラーが出ます。 (2006-09-13 01:29 by nabeken #24856)

File#flockが機能する環境でも、3プロセス目以降で排他制御に失敗する障害がありましたので、revision 1.80で修正したつもりです。
File#flockが機能しない環境で排他制御が出来ていないのは、変わりありません。
Reply to #24750

Reply to #24856×

You can not use Wiki syntax
You are not logged in. To discriminate your posts from the rest, you need to pick a nickname. (The uniqueness of nickname is not reserved. It is possible that someone else could use the exactly same nickname. If you want assurance of your identity, you are recommended to login before posting.) Login