FWIW, since I didn't hear any other suggestions about this,
I filed it as Bug 33624:

http://issues.apache.org/bugzilla/show_bug.cgi?id=33624

 
Todd.

> -----Original Message-----
> From: Bradley, Todd 
> Sent: Wednesday, February 09, 2005 3:43 PM
> To: '[email protected]'
> Subject: SocketHubAppender issues with socket cleanup
> 
> Hi, I've been using log4j the past month or so, and am 
> fighting an unusually wily problem related to socket shutdown 
> from SocketHubAppender.
> 
> I've written a class that acts as a socket client and 
> connects to an application using a SocketHubAppender to 
> gather up log events.  To unit test my class, I've written a 
> test fixture that I call FileSpewer.  It just reads lines 
> from a file and sends them out as log4j log messages.  So, 
> when FileSpewer is running, it's a log source and my other 
> class (which is called LogProxy, FWIW) is the log sink.  I'm 
> running both in their own thread.
> 
> When FileSpewer's thread exits, I would expect some sort of 
> exception to be thrown from LogProxy's socket read.  
> Specifically, I'd expect either an EOF exception or a 
> connection reset exception.  However, I don't get either.  
> The socket read just waits and waits for a log event that's 
> never going to arrive (because the log source has exited).
> 
> I've read the note in the docs about "If the JVM hosting the 
> SocketHubAppender exits before the SocketHubAppender is 
> closed either explicitly or subsequent to garbage collection, 
> then there might be untransmitted data in the pipe which 
> might be lost. This is a common problem on Windows based 
> systems."  And I thought I might be seeing a similar issue, 
> since I'm on Windows XP.
> 
> So, I tried explicitly calling my SocketHubAppender's 
> close().  However, it doesn't fix the problem, and causes 
> null pointer exceptions instead (I noticed through the log4j 
> debug messages that SocketHubAppender is trying to call 
> serverMonitor.stopMonitor() on a serverMonitor that is null).
> 
> A few other bits of info that may be useful:  When I run my 
> FileSpewer as a separate app (rather than running as a thread 
> of my JUnit test), my socket client does get a "Connection 
> reset" exception when that separate app closes down.  
> However, when I run FileSpewer in a thread spawned by my 
> JUnit test case, I never do get that exception.
> 
> Any ideas?  I've been debugging this problem all day and am 
> at wit's end.
> 
> 
> Thanks in advance,
> Todd.
> ----
> Todd Bradley - Polycom - QA Lead, Super Secret Project
> 
> Visit me at my WebOffice for IM and app sharing:
> http://www.polycomweboffice.com/[EMAIL PROTECTED] 
> 

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to