Ah wow, yeah I was really lost there too - good to hear you got it resolved! On Feb 9, 2013 9:02 PM, "Liu Haifeng" <[email protected]> wrote:
> I got this resolved, it's a bug in my java code. I didn't close the error > stream, which means tail's stderr was piped to the java program too. I did > not consume any error output, and after a month the stderr buffer got full, > that caused tail to block. > > Thanks. > > 在 2013-2-8,下午11:01,Cryptographrix <[email protected]> 写道: > > If it's happening when some type of log rotation rotates the log out, > there is a good possibility that tail catches the EOF when log rotation > kicks the process that created the file and tail dies. > > I believe the retry feature of tail may not necessarily retry after what > it sees as an EOF, and that would probably be intentional. > > To test this, you can tail the file yourself when log rotation is going to > run. If you go back to shell, then you need to write a retry into the Java > code you're writing to compensate. > > It may very likely be that Oracle added STDIN limitations into Java with > the latest releases as well. > > On Feb 8, 2013 9:36 AM, "Liu Haifeng" <[email protected]> wrote: > >> We are developing our own tailer now, but I want to find out what >> happened with gnu tail or oracle java. >> >> On Feb 8, 2013, at 10:03 PM, Cryptographrix <[email protected]> >> wrote: >> >> I do not know what limitations STDIN has on it in java offhand, but it >> sounds like this is what you are trying to do: >> >> http://www.informit.com/guides/content.aspx?g=java&seqNum=226 >> >> >> >> >> On Thu, Feb 7, 2013 at 11:52 PM, Liu Haifeng <[email protected]>wrote: >> >>> Hi >>> >>> I have a log transport agent written in java which creates a sub process >>> that executing "tail -F a.log" to tail log file,and the output is piped to >>> the main java process,thus I can read and transport log content using java. >>> >>> This worked fine in the past 30 days,but now it seams the java process >>> can't read any data. I checked java thread stack, it's blocked on >>> Java.io.FileInputStream.readBytes. >>> >>> The log file I am tailing is rotated every one hour,and the fault >>> happened at the moment the rotating script is supposed to run. >>> >>> Currently I have no idea about this fault. Here following by some status >>> of the tail process, not more as I don't have the root privilege. >>> >>> >>> #cat /proc/28195/status**** >>> >>> >>> Name: tail**** >>> State: S (sleeping)**** >>> SleepAVG: 78%**** >>> Tgid: 28195**** >>> Pid: 28195**** >>> PPid: 28143**** >>> TracerPid: 0**** >>> Uid: 0 0 0 0**** >>> Gid: 0 0 0 0**** >>> FDSize: 256**** >>> Groups: 0 1 2 3 4 6 10**** >>> VmPeak: 3828 kB**** >>> VmSize: 3828 kB**** >>> VmLck: 0 kB**** >>> VmHWM: 524 kB**** >>> VmRSS: 524 kB**** >>> VmData: 180 kB**** >>> VmStk: 88 kB**** >>> VmExe: 36 kB**** >>> VmLib: 1468 kB**** >>> VmPTE: 36 kB**** >>> StaBrk: 198b3000 kB**** >>> Brk: 198d4000 kB**** >>> StaStk: 7fff7679c1d0 kB**** >>> Threads: 1**** >>> SigQ: 0/32768**** >>> SigPnd: 0000000000000000**** >>> ShdPnd: 0000000000000000**** >>> SigBlk: 0000000000000004**** >>> SigIgn: 0000000000000003**** >>> SigCgt: 0000000000000000**** >>> CapInh: 0000000000000000**** >>> CapPrm: 00000000fffffeff**** >>> CapEff: 00000000fffffeff**** >>> Cpus_allowed: 00000000,00000000,00000000,00000000,00000000,00000000 >>> ,ffffffff,ffffffff**** >>> Mems_allowed: 00000000,00000001**** >>> >>> >>> #cat /proc/28195/stat**** >>> 28195 (tail) S 28143 28138 27881 0 -14202496 141 0 1 0 10328 53939 0 0 18 >>> 0 1 0 214643641 3919872 131 18446744073709551615 1 1 0 0 0 0 4 3 0 >>> 18446744073709551615 0 0 17 2 0 0 1**** >>> >>> >>> #yum list|grep coreutils**** >>> coreutils.x86_64 5.97-34.el5_8.1 >>> installed**** >>> policycoreutils.x86_64 1.33.12-14.8.el5 >>> installed**** >>> policycoreutils-gui.x86_64 1.33.12-14.8.el5 >>> base**** >>> policycoreutils-newrole.x86_64 1.33.12-14.8.el5 >>> base >>> >>> >>> >> >>
