ode-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Abdulkadir Yaman (Created) (JIRA)" <j...@apache.org>
Subject [jira] [Created] (ODE-943) NoClassDefFoundError for org.apache.log4j.helpers.AbsoluteTimeDateFormat in SimpleScheduler.doLoadImmediate() leads memory leak
Date Mon, 10 Oct 2011 17:32:31 GMT
NoClassDefFoundError for org.apache.log4j.helpers.AbsoluteTimeDateFormat in SimpleScheduler.doLoadImmediate()
leads memory leak
-------------------------------------------------------------------------------------------------------------------------------

                 Key: ODE-943
                 URL: https://issues.apache.org/jira/browse/ODE-943
             Project: ODE
          Issue Type: Bug
          Components: BPEL Runtime, JBI Integration
    Affects Versions: 1.3.5, 1.4
         Environment: Ubuntu 11.04 64bit, Oracle JDK 1.6, Servicemix 4.3.0
            Reporter: Abdulkadir Yaman


On a fresh installation of Servicemix 4.3.0 does not expose org.apache.log4j.helpers by default
although Pax logging bundle contains this package. At line:707 of Ode_1.3.5 version and line:732
of trunk,  AbsoluteTimeDateFormat f = new AbsoluteTimeDateFormat(); line leads to NoClassDefFoundError
for org.apache.log4j.helpers.AbsoluteTimeDateFormat. As this error is a subclass of throwable,
it is not caught in catch() block.

This issue leads to huge memory leak under load as _processedSinceLastLoadTask.clear(); line
can not be reached ever, 1 million requests will make your 1gb heap size drained and get your
servicemix in a fullgc cycles.

I worked around this issue by wrapping log4j jar into servicemix by karaf@ osgi:install -s
wrap:mvn:log4j/log4j/1.2.13 , and restarting whole system. 

Also log4j dependencies are imported as resolution:optional in MANIFEST-MF in ode-jbi bundle.


To reproduce;

1 - reduce heap size in servicemix executable
2 - add jvm option : -verbosegc to watch gc and fullgc cycles on karaf console or -Xloggc:somefile.out
for tailing a file for output
3 - set KARAF_DEBUG=true in case you want to debug and see _processedSinceLastLoadTask.size()
shows increasing number of entries
3 - download servicemix 4.3.0 from apache
4 - in karaf console, features:install ode
5 - deploy a simple bpel flow,   features:install examples-ode-ping-pong
6 - generate load either via JMeter or Soapui
7 - take a heap dump either via jmap or via JConsole finding mbean  com.sun.management-->HotSpotDiagnostic-->
operations --> dumpHeap(heapdump.snapshot) , you can find dump file under $SMX_HOME
8 - analyse it via yourkit profiler or jprofiler, whatever suits you, you will see one object
retain most of the memory, which is  org/apache/ode/scheduler/simple/SimpleScheduler on object
explorer window.


--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Mime
View raw message