Uploaded image for project: 'Red Hat Fuse'
  1. Red Hat Fuse
  2. ENTESB-1445

Mock destinations in camel roots cause memory leaks when sending a lot of messages

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Won't Do
    • Icon: Major Major
    • M1
    • jboss-fuse-6.1
    • None
    • None
    • % %
    • Hide

      1)Install the bundle with the following root:

      <?xml version="1.0" encoding="UTF-8"?>
      <blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
                 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                 xmlns:cm="http://aries.apache.org/blueprint/xmlns/blueprint-cm/v1.0.0"
                 xmlns:jaxws="http://cxf.apache.org/blueprint/jaxws"
                 xmlns:cxf="http://cxf.apache.org/blueprint/core"
                 xmlns:camel="http://camel.apache.org/schema/blueprint"
                 xmlns:camelcxf="http://camel.apache.org/schema/blueprint/cxf"
                 xsi:schemaLocation="
                   http://www.osgi.org/xmlns/blueprint/v1.0.0 http://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd
                   http://cxf.apache.org/blueprint/jaxws http://cxf.apache.org/schemas/blueprint/jaxws.xsd
                   http://cxf.apache.org/blueprint/core http://cxf.apache.org/schemas/blueprint/core.xsd
                   ">
         
      <bean id="stringAggregationStrategy" class="org.jboss.fuse.qa.performance.StringAggregationStrategy"/>
          <camelContext id="blueprintContext" trace="false" xmlns="http://camel.apache.org/schema/blueprint" >
              <route>          
                   <from uri="jetty:http://0.0.0.0:8888/splitter"/>
                  <split  streaming="true">				
      				 <tokenize token="note" xml="true"/>
      						<to uri="direct:a"/>
      			</split>
              </route> 
              <route>
      			<from  uri="direct:a"/>
      				<setHeader headerName="id">
      					<simple>1</simple>
      				</setHeader>
      					<transform>
      						<simple>"Hello ${body}"</simple>
      					</transform>			
      			<to uri="direct:aggregate"/>
      		</route>		
      		 <route>
      			<from uri="direct:aggregate"/> 
      			 <aggregate strategyRef="stringAggregationStrategy" completionSize="2"> 
                  <correlationExpression>
                      <simple>header.id</simple>
                  </correlationExpression>
                     <to uri="mock:a"/>
              </aggregate>      
            
      		</route> 
          </camelContext>
      
      </blueprint>
      
      

      2) Send 15000 request with
      sy-camel-route-splitter-aggregator.xml to http://0.0.0.0:8888/splitter.
      OutOfMemoryError: GC overhead limit exceeded

      If replace <to uri="mock:a"/> with

      <transform>
      	<simple>"from aggregate"</simple>
      </transform>
      

      no exception occurs.
      The message for sending is attached as well as heapdump.

      Show
      1)Install the bundle with the following root: <?xml version= "1.0" encoding= "UTF-8" ?> <blueprint xmlns= "http: //www.osgi.org/xmlns/blueprint/v1.0.0" xmlns:xsi= "http: //www.w3.org/2001/XMLSchema-instance" xmlns:cm= "http: //aries.apache.org/blueprint/xmlns/blueprint-cm/v1.0.0" xmlns:jaxws= "http: //cxf.apache.org/blueprint/jaxws" xmlns:cxf= "http: //cxf.apache.org/blueprint/core" xmlns:camel= "http: //camel.apache.org/schema/blueprint" xmlns:camelcxf= "http: //camel.apache.org/schema/blueprint/cxf" xsi:schemaLocation=" http: //www.osgi.org/xmlns/blueprint/v1.0.0 http://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd http: //cxf.apache.org/blueprint/jaxws http://cxf.apache.org/schemas/blueprint/jaxws.xsd http: //cxf.apache.org/blueprint/core http://cxf.apache.org/schemas/blueprint/core.xsd "> <bean id= "stringAggregationStrategy" class= "org.jboss.fuse.qa.performance.StringAggregationStrategy" /> <camelContext id= "blueprintContext" trace= " false " xmlns= "http: //camel.apache.org/schema/blueprint" > <route> <from uri= "jetty:http: //0.0.0.0:8888/splitter" /> <split streaming= " true " > <tokenize token= "note" xml= " true " /> <to uri= "direct:a" /> </split> </route> <route> <from uri= "direct:a" /> <setHeader headerName= "id" > <simple>1</simple> </setHeader> <transform> <simple> "Hello ${body}" </simple> </transform> <to uri= "direct:aggregate" /> </route> <route> <from uri= "direct:aggregate" /> <aggregate strategyRef= "stringAggregationStrategy" completionSize= "2" > <correlationExpression> <simple>header.id</simple> </correlationExpression> <to uri= "mock:a" /> </aggregate> </route> </camelContext> </blueprint> 2) Send 15000 request with sy-camel-route-splitter-aggregator.xml to http://0.0.0.0:8888/splitter . OutOfMemoryError: GC overhead limit exceeded If replace <to uri="mock:a"/> with <transform> <simple> "from aggregate" </simple> </transform> no exception occurs. The message for sending is attached as well as heapdump.

      When used as <to uri="mock:a"/> , the following error occurs in Fuse after sending 15000 times of 5Kb messages:

      JBossFuse:karaf@root> Exception in thread "qtp103575850-118" java.lang.OutOfMemoryError: GC overhead limit exceeded
      Exception in thread "MavenIndexerFacade startup timer" java.lang.OutOfMemoryError: GC overhead limit exceeded
      Exception in thread "qtp1682645240-64" java.lang.OutOfMemoryError: GC overhead limit exceeded
      Exception in thread "Thread-1" java.lang.OutOfMemoryError: GC overhead limit exceeded

      Exception in thread "RMI RenewClean-[10.16.90.126:44444]" java.lang.OutOfMemoryError: GC overhead limit exceeded

      When using the same root , but without <to uri="mock:a"/>, nor exception occurs.
      The process had following settings:
      -Xms128M -Xmx1024M -XX:+UnlockDiagnosticVMOptions -XX:+UnsyncloadClass -XX:PermSize=16M -XX:MaxPermSize=512M
      Heapdump is too large to be attached here, but I can provide it, if needed.

              cibsen@redhat.com Claus Ibsen
              emedvede Elena Medvedeva (Inactive)
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

                Created:
                Updated:
                Resolved: