Skip Menu |

This queue is for tickets about the File-Tail-App CPAN distribution.

Report information
The Basics
Id: 28347
Status: resolved
Priority: 0/
Queue: File-Tail-App

People
Owner: Nobody in particular
Requestors: wim [...] livens.net
Cc:
AdminCc:

Bug Information
Severity: Critical
Broken in: v0.0.3
Fixed in: (no value)



Subject: The whole logfile is reread when restarting the App
The whole logfile is reread when restarting the App. The position in the lastrun file is always zero. Using roughly the example from the doc and a simple 3 line input file (see below). When I run the app, it correctly returns 3 lines. When I ^C the app and restart it, it again returns the same 3 lines. Looking in the lastrun file, the first number is 0. I tested this on three different linux and one BSD platform. All three linuxes (Debian 3.1, Debian 4.0 and RHEL4.0) have the problem. On the FreeBSD box it worked fine. The details below are from the test on Debian 4.0. Please point me out in case I am just doing something silly... ~$ sudo cpan install "File::Tail::App" ~$ cat >test_tail.pl #!/usr/bin/perl use strict; use warnings; #use Unix::PID '/var/run/xlogr.pid'; use File::Tail::App qw(tail_app); tail_app({ 'new' => ['x.log'], 'line_handler' => \&_wag_tail, 'lastrun_file' => 'x.lastrun', }); sub _wag_tail { my($line) = @_; print $line; } ~$ cat >x.log 1 2 3 ~$ perl test_tail.pl 1 Use of uninitialized value in concatenation (.) or string at /usr/local/share/perl/5.8.8/File/Tail/App.pm line 163. 2 Use of uninitialized value in concatenation (.) or string at /usr/local/share/perl/5.8.8/File/Tail/App.pm line 163. 3 Use of uninitialized value in concatenation (.) or string at /usr/local/share/perl/5.8.8/File/Tail/App.pm line 163. ^C ~$ perl test_tail.pl 1 2 3 ^C ~$ cat x.lastrun 0-246999--6 ~$ uname -a Linux obelix 2.6.18-4-686 #1 SMP Wed May 9 23:03:12 UTC 2007 i686 GNU/Linux File::Tail 0.98 File::Tail::App 0.0.3 ~$ perl -V Summary of my perl5 (revision 5 version 8 subversion 8) configuration: Platform: osname=linux, osvers=2.6.18.3, archname=i486-linux-gnu-thread-multi uname='linux saens 2.6.18.3 #1 smp sat nov 25 13:39:52 est 2006 i686 gnulinux ' config_args='-Dusethreads -Duselargefiles -Dccflags=-DDEBIAN -Dcccdlflags=-fPIC -Darchname=i486-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.8 -Darchlib=/usr/lib/perl/5.8 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/perl5 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.8.8 -Dsitearch=/usr/local/lib/perl/5.8.8 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Uusesfio -Uusenm -Duseshrplib -Dlibperl=libperl.so.5.8.8 -Dd_dosuid -des' hint=recommended, useposix=true, d_sigaction=define usethreads=define use5005threads=undef useithreads=define usemultiplicity=define useperlio=define d_sfio=undef uselargefiles=define usesocks=undef use64bitint=undef use64bitall=undef uselongdouble=undef usemymalloc=n, bincompat5005=undef Compiler: cc='cc', ccflags ='-D_REENTRANT -D_GNU_SOURCE -DTHREADS_HAVE_PIDS -DDEBIAN -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64', optimize='-O2', cppflags='-D_REENTRANT -D_GNU_SOURCE -DTHREADS_HAVE_PIDS -DDEBIAN -fno-strict-aliasing -pipe -I/usr/local/include' ccversion='', gccversion='4.1.2 20061115 (prerelease) (Debian 4.1.1-20)', gccosandvers='' intsize=4, longsize=4, ptrsize=4, doublesize=8, byteorder=1234 d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=12 ivtype='long', ivsize=4, nvtype='double', nvsize=8, Off_t='off_t', lseeksize=8 alignbytes=4, prototype=define Linker and Libraries: ld='cc', ldflags =' -L/usr/local/lib' libpth=/usr/local/lib /lib /usr/lib libs=-lgdbm -lgdbm_compat -ldb -ldl -lm -lpthread -lc -lcrypt perllibs=-ldl -lm -lpthread -lc -lcrypt libc=/lib/libc-2.3.6.so, so=so, useshrplib=true, libperl=libperl.so.5.8.8 gnulibc_version='2.3.6' Dynamic Linking: dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags='-Wl,-E' cccdlflags='-fPIC', lddlflags='-shared -L/usr/local/lib' Characteristics of this binary (from libperl): Compile-time options: MULTIPLICITY PERL_IMPLICIT_CONTEXT PERL_MALLOC_WRAP THREADS_HAVE_PIDS USE_ITHREADS USE_LARGE_FILES USE_PERLIO USE_REENTRANT_API Built under linux Compiled at Dec 6 2006 23:05:53 @INC: /etc/perl /usr/local/lib/perl/5.8.8 /usr/local/share/perl/5.8.8 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.8 /usr/share/perl/5.8 /usr/local/lib/site_perl /usr/local/lib/perl/5.8.4 /usr/local/share/perl/5.8.4 .
From: DMUEY [...] cpan.org
Sorry for the delay, I'll take a look ASAP :)
Try adjusting via args in 'new' key as per new() in `perldoc File::Tail`. IIRC, The way it is you're telling it to start at the beginning when the program is restarted. Then you can append to the file and the app will continue to tail the new lines. Also may want to use the latest File::Tail since the one in the example is old.
Subject: Re: [rt.cpan.org #28347] The whole logfile is reread when restarting the App
Date: Wed, 5 Sep 2007 19:55:56 +0200
To: bug-File-Tail-App [...] rt.cpan.org
From: "Wim Livens" <wim [...] livens.net>
Hello again, I temporary gave up on the idea of using File::Tail(::App), but just tried to pick it up again. Unfortunatly your hints didn't bring me any further. However, when I replace the tell() when calling _set_lastrun_data() by sysseek($tail->{'handle'}, 0, 1) it seems to work fine. But to be honest I'm not sure what I'm doing. Wim.
On Wed Sep 05 14:05:16 2007, WILIV wrote: Show quoted text
> Hello again,
Could you send me example code that reproduces what you're seeing? thanks!
Subject: Re: [rt.cpan.org #28347] The whole logfile is reread when restarting the App
Date: Thu, 10 Apr 2008 11:49:29 +0100
To: bug-File-Tail-App [...] rt.cpan.org
From: Paul Williams <info [...] it.alldaypa.com>
The perldoc document explains the problem; http://perldoc.perl.org/functions/tell.html File::Tail uses the sys* operations which ignore the buffering so tell doesn't return the current position. As pointed out by Wim, replacing the occurrences of tell should resolve this issue. tell($tail->{'handle'}) sysseek($tail->{'handle'},0,1) Thanks, -Paul
From: paulgraydon [...] hotmail.com
On Thu Apr 10 06:52:37 2008, info@it.alldaypa.com wrote: Show quoted text
> The perldoc document explains the problem; > > http://perldoc.perl.org/functions/tell.html > > File::Tail uses the sys* operations which ignore the buffering so tell > doesn't return the current position. As pointed out by Wim, replacing > the occurrences of tell should resolve this issue. > > tell($tail->{'handle'}) > > sysseek($tail->{'handle'},0,1) > > > Thanks, > -Paul >
For what it's worth, it's still not working. I'm also getting this nice error: Use of uninitialized value $md5_chk in concatenation (.) or string at /usr/local/share/perl/5.10.0/File/Tail/App.pm line 163. If it's the first time the script has been run and the lastrun file doesn't exist, or is empty.
Subject: Re: [rt.cpan.org #28347] The whole logfile is reread when restarting the App
Date: Thu, 25 Mar 2010 07:10:41 -0500
To: bug-File-Tail-App [...] rt.cpan.org
From: Dan Muey <webmaster [...] simplemood.com>
thanks, I'll try moving this up on the TODO list On Mar 24, 2010, at 2:49 PM, Paul Graydon via RT wrote: Show quoted text
> Queue: File-Tail-App > Ticket <URL: https://rt.cpan.org/Ticket/Display.html?id=28347 > > > On Thu Apr 10 06:52:37 2008, info@it.alldaypa.com wrote:
>> The perldoc document explains the problem; >> >> http://perldoc.perl.org/functions/tell.html >> >> File::Tail uses the sys* operations which ignore the buffering so >> tell >> doesn't return the current position. As pointed out by Wim, >> replacing >> the occurrences of tell should resolve this issue. >> >> tell($tail->{'handle'}) >> >> sysseek($tail->{'handle'},0,1) >> >> >> Thanks, >> -Paul >>
> > For what it's worth, it's still not working. I'm also getting this > nice > error: > > Use of uninitialized value $md5_chk in concatenation (.) or string at > /usr/local/share/perl/5.10.0/File/Tail/App.pm line 163. > > If it's the first time the script has been run and the lastrun file > doesn't exist, or is empty. > > > > >
The problem in the subject and the uninitialized value wanring are addressed in v0.4 just uploaded to CPAN. Thanks!!