(fwd) Re: mail2news gateway

Andrey Gerzhov (kittle@freeland.kiev.ua)
Fri, 24 Dec 1999 02:27:07 +0200 (EET)

-- forwarded message --
Path: freeland.kiev.ua!routki.ki.yurteh.net!carrier.kiev.ua!news.kiev.sovam.com!newsfeed.gamma.ru!Gamma.RU!nntp.primenet.com!nntp.gctr.net!news.primenet.com!not-for-mail
From: serge@yahoo-inc.com (Sergiy Zhuk)
Newsgroups: ukr.nodes
Subject: Re: mail2news gateway
Date: 17 Dec 1999 01:22:33 GMT
Organization: who cares ?
Lines: 58
Message-ID: <83c38p$9o5$1@nnrp02.primenet.com>
References: <81vljo$47n$1@nnrp02.primenet.com>
<836ho6$cui$1@nnrp02.primenet.com> <83bmkg$6gs$1@scream.jriver.com>
NNTP-Posting-Host: serge.yahoo.com
Mime-Version: 1.0
Content-Type: text/plain; charset=koi8-u
Content-Transfer-Encoding: 8bit
X-Complaints-To: abuse@globalcenter.net
X-Posted-By: @205.216.162.201 (yahoonews)
X-Newsreader: knews 1.0b.1
Xref: freeland.kiev.ua ukr.nodes:10356

hi

On Thu, 16 Dec 1999, igor sviridov writes:

>> одно "но" - если сервер лежит долго, то файликов в in.coming будет ооочень
>> много ;)
>
> /usr/local/bin/rnews-locking:

это и так понятно, но я не про кучу процессов, перемалывающих одни и те же
файлики, а про то, что даже одному процессу крайне сложно переварить 60-80
тысяч файликов в одном каталоге.
На самом деле inews - это диверсия, постить надо напрямую ihave() и
складывать статьи в один batch, если сервер лежит.

> trap 'rm -f ${LOCK} ; exit 1' 1 2 3 15

тут, кстати, есть одна нехорошесть - в шеле нельзя alarm() поставить ;)

на перле я делаю так, можно и без shlock() обойтись, но тогда надо делать
самому то, что он делает...

# op: 1 - set lock, 0 - remove lock
sub maint_lock
{
my $op = shift;
my $shlock = "/usr/local/bin/shlock -p $$ -f";
my $fname;
my $smth;
my $timeout = 5*60; # give prev. proc 5 mins to complete
my $printed = 0;
my $lock = '/var/run/';

($fname,$smth) = split(/\//,reverse $0);
$fname = reverse($fname);
$lock .= "$fname\.lck";
if( $op )
{
$SIG{ALRM} = sub { die "FATAL: couldn't acquire lock withing $timeout seconds\n" };
alarm $timeout;
while( system("$shlock $lock") )
{
print STDERR "NOTE: The $fname script is already running, waiting...\n" if ! $printed;
$printed = 1;
sleep 2;
}
print STDERR "NOTE: Lock is acquired...\n" if $printed;
alarm 0;
}
else
{
unlink $lock;
}
}

--
rgds,
serge
-- end of forwarded message --

-- 
Мы все немножко люди,
                                               Kittle