Namazu-devel-ja(旧)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: mknmz: user-friendly progress messaging
- From: Rei FURUKAWA <furukawa@xxxxxxxxxxxx>
- Date: Mon, 08 May 2000 02:35:57 +0900
- X-ml-name: namazu-devel-ja
- X-mail-count: 00461
- References: <200002161528.AAA14085@ring.etl.go.jp> <200002180320.MAA09161@ring.etl.go.jp> <200002190359.MAA28548@ring.etl.go.jp>
古川です。
これも、だいぶ前の話ですが…
From: Satoru Takabayashi <satoru-t@xxxxxxxxxxxxxxxxxx>
Subject: [namazu-dev 1667] Re: mknmz: user-friendly progress messaging
Date: Sat, 19 Feb 2000 13:00:12 +0900
satoru-t> Rei FURUKAWA <furukawa@xxxxxxxxxxxxxxxx> wrote:
satoru-t> >(2) HUP を受けたら、次のファイルのタイミングで exec し直す
satoru-t> >top などで監視していて「危い!」と思ったら、kill -HUP pid する、という使
satoru-t> >いかたができます。
satoru-t>
satoru-t> 処理がややこしくなりそうなので、2.0 の公開後にします。SIGHUP
satoru-t> を受け取ったときの処理は次のようになるでしょうか。
satoru-t>
satoru-t> * 次のファイルのタイミングで exec し直す
satoru-t> - 急遽 --checkpoint モードに切り替わる
satoru-t>
satoru-t> * 適切なメッセージを表示する
satoru-t> - その時点での $processed_files_size など
satoru-t>
satoru-t> * $conf::ON_MEMORY_MAX を減らす
satoru-t> - その時点での $processed_files_size にする?
これについて、「mknmz 側に最低限、本当に必要な機能は何か」と考えてみると、
TERM シグナルを受けたら、現在処理中のファイルが終わった時点で終了処理
に移る。
これさえあれば、あとは、外部ツールなどでも、なんとかなると思います。
# 途中で終わりたくなったら、kill -TERM pid すれば、今までの作業を無駄に
# せずに、安全に終了できるようになります。
私としては、ぜひ導入したいのですが、いかがでしょう?
--
Rei FURUKAWA
furukawa@xxxxxxxxxxxx
--- mknmz.in.orig Wed Apr 26 11:30:51 2000
+++ mknmz.in Sun May 7 08:19:33 2000
@@ -65,6 +65,7 @@
my @LoadedRcfiles = ();
my $Magic = new File::MMagic;
+my $ReceiveTERM = 0;
STDOUT->autoflush(1);
STDERR->autoflush(1);
@@ -125,6 +126,7 @@
$total_files_size += $cfile_size;
$processed_files_size += $cfile_size;
+ last if $ReceiveTERM;
if ($processed_files_size > $conf::ON_MEMORY_MAX) {
if (%KeyIndex) {
$key_count = write_index();
@@ -320,6 +322,11 @@
$SIG{'INT'} = sub {
util::cdie("SIGINT caught! Aborted.\n");
+ };
+
+ $SIG{'TERM'} = sub {
+ print STDERR "SIGTERM caught!\n";
+ $ReceiveTERM = 1;
};
# For executing mknmz in scripts directory