http://www.perlmonks.org?node_id=663002


in reply to Re: Man, File::Tail is just beating me down!
in thread Man, File::Tail is just beating me down!

It's an excellent point and something I will defintely review, but because this problem has been ongoing, I am logging where it fails, which record, etc...and in some cases have even caught it happening. The problem I have discussed in this thread is seems to be unrelated. When I see a restart, I look at the line it restarted on, and check that line, the previous 10, and even the next 10. All standard...
  • Comment on Re^2: Man, File::Tail is just beating me down!

Replies are listed 'Best First'.
Re^3: Man, File::Tail is just beating me down!
by starbolin (Hermit) on Jan 18, 2008 at 06:18 UTC

    Rereading my post I realize that I was very unclear as to what I was seeing. I was assuming only the evidence you had for a restart was the logger script. If I was wrong then please supply any other logs you may have. Seeing that the logger was flawed I assumed that cleaning up the logger would give a clearer picture of what was happening. I saw nothing in what you had posted to convince me it wasn't a logger problem. Are you saying that some problem manifests itself even without the posted logger script running?? You'll have to excuse me in that I was a bit myopic in focusing on the code that was posted.

    Could you, please, post the code in the host machine that calls the suspected module?


    s//----->\t/;$~="JAPH";s//\r<$~~/;{s|~$~-|-~$~|||s |-$~~|$~~-|||s,<$~~,<~$~,,s,~$~>,$~~>,, $|=1,select$,,$,,$,,1e-1;print;redo}
      Originally it showed in the log on the client. There is a sequence number in each record that the process watches. If the sequence number was less than the current one, it figured it was a restart. printed to the log what the previous sequence number was, and the current one, and over and over everytime it got to that warning in the log, the sequence number was from the first record in the file. In my original post I put the logic to watch for a restart so it wouldn't try and stream all that data. that had been processed already. That code in the original post is almost the whole script minus the Socket connection. First the script receives the last record inserted into the database, creates the file::tail instance, then starts processing the log file and doesn't start streaming records until it gets to last line inserted. I guess that was a long winded way of saying everything is in the original post of this thread. I am convinced that one of the options I set here
      $file=File::Tail->new(name=>$filename, maxinterval=>5, interval=>1, ta +il=>-1, ignore_nonexistant => 1, errmode=>\&do_exit);
      has something in it's subroutine that causes a restart when I don't want one. It also looks like he does some sort of seek? Maybe to find where it left off? That would be cool to jump straight to where it left off by tracking the bytes. :)

        Tail is not restarting. It is reopening the file and the dumping the file again as per the default setting of reset_tail. Set reset_tail to 0 to not receive the whole file each time there is a pause in the logs.


        s//----->\t/;$~="JAPH";s//\r<$~~/;{s|~$~-|-~$~|||s |-$~~|$~~-|||s,<$~~,<~$~,,s,~$~>,$~~>,, $|=1,select$,,$,,$,,1e-1;print;redo}