[ 
https://issues.apache.org/jira/browse/ODE-943?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13499843#comment-13499843
 ] 

Mateusz Nowakowski commented on ODE-943:
----------------------------------------

Additional workaround:

Create a fragment bundle and attach it to pax-loggging-servce. 
PaxLogiingService contains complete org.apache.log4j.helpers package 
(pax-logging-api as well but there is only one class)
Mvn instructions are:
<build>
    <plugins>
        <plugin>
          <groupId>org.apache.felix</groupId>
          <artifactId>maven-bundle-plugin</artifactId>
          <extensions>true</extensions>
          <configuration>
              <instructions>
                  <Import-Package>!*</Import-Package>
                  <Export-Package>
                      org.apache.log4j.helpers;version=1.2.15
                  </Export-Package>
                  
<Fragment-Host>org.ops4j.pax.logging.pax-logging-service</Fragment-Host>
              </instructions>
          </configuration>
        </plugin>
    </plugins>
</build>

and ODE works again,
                
> 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
>             Fix For: 1.3.6, 1.4
>
>
> 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
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to