[prev in list] [next in list] [prev in thread] [next in thread]
List: log4cxx-dev
Subject: [jira] [Created] (LOGCXX-461) SocketAppender creates memory issue for log4j server.
From: "Jeremy Gibson (JIRA)" <log4cxx-dev () logging ! apache ! org>
Date: 2015-12-15 16:02:46
Message-ID: JIRA.12922018.1450195321000.27671.1450195366654 () Atlassian ! JIRA
[Download RAW message or body]
Jeremy Gibson created LOGCXX-461:
------------------------------------
Summary: SocketAppender creates memory issue for log4j server.
Key: LOGCXX-461
URL: https://issues.apache.org/jira/browse/LOGCXX-461
Project: Log4cxx
Issue Type: Bug
Components: Appender
Affects Versions: 0.10.0, 0.11.0
Environment: Red Hat Linux 6.7
Reporter: Jeremy Gibson
log4cxx is reproducing java's serialization methods in the ObjectOutputStream class \
which the SocketAppender uses. However, there is one part missing. The Java \
implementation of SocketAppender does a reset of the ObjectOutputStream after each \
event which tells the ObjectInputStream to clean up its references on the server \
side. Without this reset, the references will never clean up and the server will run \
out of memory. There are no good ways to fix this from the java side since the \
ObjectInputStream is depending on the ObjectOutputStream to do the resetting. The \
byte code for TC_RESET is 0x79. So a reset function might look something like this in \
ObjectOutputStream:
void ObjectOutputStream::reset(Pool& p){
os->flush(p);
writeByte(TC_RESET,p);
os->flush(p);
objectHandle = 0x7E0000;
classDescriptions->clear();
}
Not sure if the this change would influence any other parts of the code except for a \
call in SocketAppender::append() function to use the after the event->write() call.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic