(from osdn.net/users/leihcrev)
菊池です。度々すみません。
# 諸事情でメールの読み書きがしづらいもので、あまり機能面の話題ではないのですが、こちらに失礼します。
Crawler プロセスで OOM が発生し、IndexUpdater スレッドが死んでしまった場合に、クロールが継続しているようです。
「[fess-user 159] Re: ヒープメモリーに関して」を拝見したところ、クロール用スレッドを終了させる想定とのことでしたが、クロールが一巡するまで Crawler プロセスは終了しませんでした。
ログに「IndexUpdater is terminated.」は出ていました。
ちょっと追ってみたのですが、IndexUpdate スレッドで OOM 発生後、systemHelper.forceStop は true になっていました。systemHelper.currentProcess は null なので、destroyProcess() には行きません。
そのとき Web Crawling Process スレッドは WebFsIndexHelper#crawl() の S2Robot.awaitTermination() のループを回っていました。
このループでは systemHelper.forceStop を見ていないので、全ての Robot スレッドが終了するまでループを抜けないようでした。
S2Robot.awaitTermination() のループの中でも systemHelper.forceStop をチェックしてもよいのかと思うのですが、いかがでしょうか。