logging-log4j-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Ceki Gülcü <c...@qos.ch>
Subject Re: JDBCAppender memory leak issue
Date Wed, 12 Feb 2003 15:11:24 GMT

JDBCAppender is likely to be removed.

At 10:04 12.02.2003 -0500, you wrote:



>How long does something like this typically take to resolve? ... and does it
>mean going to a version greater than 1.2.7?
>I apologize for my newness to this process.
>
>We're intended to use the JDBC appender and this could obviously be
>problematic.
>
>Mike
>
>
>
>
>-----Original Message-----
>From: bugzilla@apache.org [mailto:bugzilla@apache.org]
>Sent: Wednesday, February 12, 2003 9:59 AM
>To: log4j-dev@jakarta.apache.org
>Subject: DO NOT REPLY [Bug 16998] New: - JDBCAppender leaks memory
>
>
>DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG
>RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
><http://nagoya.apache.org/bugzilla/show_bug.cgi?id=16998>.
>ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND
>INSERTED IN THE BUG DATABASE.
>
>http://nagoya.apache.org/bugzilla/show_bug.cgi?id=16998
>
>JDBCAppender leaks memory
>
>            Summary: JDBCAppender leaks memory
>            Product: Log4j
>            Version: 1.2
>           Platform: Other
>         OS/Version: Other
>             Status: NEW
>           Severity: Normal
>           Priority: Other
>          Component: Appender
>         AssignedTo: log4j-dev@jakarta.apache.org
>         ReportedBy: Roland.S.Nygren@Telia.se
>
>
>The class org.apache.log4j.jdbc.JDBCAppender in Log4j 1.2.7 (and probably
>earlier too) leaks memory. In the method flushBuffer() values are added to
>the
>ArrayList removes (removes.add(logEvent)), but this ArrayList is never
>cleared
>or values removed. After some time this will end up with an
>OutOfMemoryError.
>In my example of flushBuffer() below there will be no memory leak.
>
>Besides this we have some ideas about improving performance for user threads
>by adding a thread that handles the database writing.
>
>   public void append(LoggingEvent event) {
>     buffer.add(event);
>     if (buffer.size() >= bufferSize)
>       logThread.wakeup();
>   }
>   public synchronized void flushBuffer() {
>     LoggingEvent logEvent = null;
>     while (buffer.size() >0) {
>       try {
>         logEvent = (LoggingEvent)buffer.remove(0);
>       } catch(Exception ignore){
>         break;
>       }
>       try {
>         String sql = getLogStatement(logEvent);
>         execute(sql);
>       } catch (SQLException sqle) {
>         // Unable to store LogEvent i database, put it back in buffer.
>         if (logEvent != null)
>           buffer.add(logEvent); // I'm not sure this is a good idea
>
>         errorHandler.error("Failed to excute sql", sqle,
>ErrorCode.FLUSH_FAILURE);
>       }
>     }
>   }
>
>---------------------------------------------------------------------
>To unsubscribe, e-mail: log4j-dev-unsubscribe@jakarta.apache.org
>For additional commands, e-mail: log4j-dev-help@jakarta.apache.org
>
>-------------------------------------------------------------------------------
>This message and any included attachments are from Siemens Medical Solutions
>Health Services Corporation and are intended only for the addressee(s).
>The information contained herein may include trade secrets or privileged or
>otherwise confidential information.  Unauthorized review, forwarding, 
>printing,
>copying, distributing, or using such information is strictly prohibited 
>and may
>be unlawful.  If you received this message in error, or have reason to 
>believe
>you are not authorized to receive it, please promptly delete this message and
>notify the sender by e-mail with a copy to CSOffice@smed.com.  Thank you
>
>---------------------------------------------------------------------
>To unsubscribe, e-mail: log4j-dev-unsubscribe@jakarta.apache.org
>For additional commands, e-mail: log4j-dev-help@jakarta.apache.org

--
Ceki 


---------------------------------------------------------------------
To unsubscribe, e-mail: log4j-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: log4j-dev-help@jakarta.apache.org


Mime
View raw message