You are viewing a plain text version of this content. The canonical link for it is here.
Posted to log4j-dev@logging.apache.org by "Ralph Goers (JIRA)" <ji...@apache.org> on 2013/03/25 01:59:15 UTC
[jira] [Resolved] (LOG4J2-181) SocketAppender reconnection doesn't
work
[ https://issues.apache.org/jira/browse/LOG4J2-181?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Ralph Goers resolved LOG4J2-181.
--------------------------------
Resolution: Fixed
Fix Version/s: 2.0-beta5
Assignee: Ralph Goers
> SocketAppender reconnection doesn't work
> ----------------------------------------
>
> Key: LOG4J2-181
> URL: https://issues.apache.org/jira/browse/LOG4J2-181
> Project: Log4j 2
> Issue Type: Bug
> Components: Appenders
> Affects Versions: 2.0-beta4
> Reporter: Ralph Goers
> Assignee: Ralph Goers
> Fix For: 2.0-beta5
>
>
> This issue was actually reported by Werner Goeschl on the developers mailing list.
> We configured a SocketAppender with a reconnectionDelay and defaultLayout (SerializedLayout) in a XML-Config File.
> After starting the application, the SocketAppender tries to open the socket periodical.
> As the next step, we start the application with the SocketServer, and so the Appender connects to it.
> But after we get the following Exception, when we will open the ObjectInputStream (final ObjectInputStream ois = new ObjectInputStream(socket.getInputStream());
>
> Exception in thread "Thread-2" java.lang.RuntimeException: java.io.StreamCorruptedException: invalid stream header: 7372003E
> at test.logger.LoggerTest_1$TCPSocketServer.run(LoggerTest_1.java:83)
> Caused by: java.io.StreamCorruptedException: invalid stream header: 7372003E
> at java.io.ObjectInputStream.readStreamHeader(Unknown Source)
> at java.io.ObjectInputStream.<init>(Unknown Source)
> at test.logger.LoggerTest_1$TCPSocketServer.run(LoggerTest_1.java:72)
>
> The reason is:
> At the Startup is no socket server available, therefore a dummy ByteArrayOutputStream is created.
> See TCPSocketManager:230
> After that, the Header of the layout (Object stream header) is written to the Dummy ByteArrayOutputStream.
> See AbstractOutputStreamAppender:62
>
> If the Reconnector-Thread succeeds, the Dummy ByteArrayOutputStream is changed to the OutputStream from the socket.
> See TCPSocketManager:175
> But after this action the object stream header is not written again!
>
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira
---------------------------------------------------------------------
To unsubscribe, e-mail: log4j-dev-unsubscribe@logging.apache.org
For additional commands, e-mail: log4j-dev-help@logging.apache.org