Hi, after taking a closer look on how a bundle update in Karaf does work and how Camel handles the camel contexts I found the reason for why my update of the bundle containing the route didn't work :-)
Some details on this "issue" at first my route didn't contain the needed localWorkDirectory attribute. So I added this and updated my bundle in Karaf. As I thought the update of the bundle does a clean installation of it. But since the camel-context is held (better referenced) by the camel-core bundle this update just didn't help any on my impression of updating the camel-context/route. So instead of trashing the data folder and doing a restart a bundle:refresh on camel-core would have worked already ... It's very logic that it behaves this way but it's not intuitive :) Maybe this can be done differently in the future (have to think on how thought) regards, Achim 2012/10/25 Achim Nierbeck <[email protected]>: > Hmm, interesting ... > need to check the reason for this later ... > > I kept updating my bundle containing this route, which failed, so now > after your suggestion > I did a "clean" run (should have done that earlier, shame on me :) ) > and now it just consumes about 1.5 GB Heap :) > > wonder why it survived the update <bundle-id> > > thanks for giving pointing me that direction :) > I was so sure the update should/would work I didn't think of cleaning > the bundle cache directory. > > regards, Achim > > > 2012/10/25 Claus Ibsen <[email protected]>: >> Digged in the code. >> >> Somehow this returns false according to your stacktrace. So it goes >> for the retrieveFileToStreamInBody instead of the 1st method. >> Can you double check your endpoint is configured correctly. >> >> if (ObjectHelper.isNotEmpty(endpoint.getLocalWorkDirectory())) { >> // local work directory is configured so we should store >> file content as files in this local directory >> return retrieveFileToFileInLocalWorkDirectory(name, exchange); >> } else { >> // store file content directory as stream on the body >> return retrieveFileToStreamInBody(name, exchange); >> } >> >> >> >> On Thu, Oct 25, 2012 at 4:51 PM, Achim Nierbeck <[email protected]> >> wrote: >>> Hi, >>> >>> using Camel 2.10.2 >>> I have a ftp endpoint that downloads a couple of files from a remote >>> FTP server. >>> There are different files located on this server, some of them are >>> about 700 MB size. >>> Now every time I start the route for downloading it gives me a OOM >>> when trying to download this file. >>> The route is configured to use the *localWorkDirectory*. >>> Roughly the route does something like the following: >>> >>> from("ftp://server?noop=true&localWorkDirectory=/myTemp&sendEmptyMessageWhenIdle=true") >>> .onException() >>> ... ommited the exception part .... >>> .onCompletion() >>> ... omitted the onCompletion part .... >>> .choice() >>> .when(body().isNull()) >>> .... stop the whole thing here ... >>> .otherwise() >>> .to("file:/dropItHere") >>> .setBody(constant("")) >>> .to("seda:doSomeLogging"); >>> >>> I tried to increase the memory up to 3GB for the Heap size with no luck. >>> >>> Following Stacktrace is logged: >>> Camel (rootContext) thread #28 - ftp://usrXXX@ServerXXXX/ >>> at java.lang.OutOfMemoryError.<init>()V (OutOfMemoryError.java:25) >>> at java.util.Arrays.copyOf([BI)[B (Arrays.java:2786) >>> at java.io.ByteArrayOutputStream.write([BII)V >>> (ByteArrayOutputStream.java:94) >>> at >>> org.apache.commons.net.io.Util.copyStream(Ljava/io/InputStream;Ljava/io/OutputStream;IJLorg/apache/commons/net/io/CopyStreamListener;Z)J >>> (Util.java:123) >>> at >>> org.apache.commons.net.ftp.FTPClient._retrieveFile(Ljava/lang/String;Ljava/lang/String;Ljava/io/OutputStream;)Z >>> (FTPClient.java:1695) >>> at >>> org.apache.commons.net.ftp.FTPClient.retrieveFile(Ljava/lang/String;Ljava/io/OutputStream;)Z >>> (FTPClient.java:1669) >>> at >>> org.apache.camel.component.file.remote.FtpOperations.retrieveFileToStreamInBody(Ljava/lang/String;Lorg/apache/camel/Exchange;)Z >>> (FtpOperations.java:328) >>> at >>> org.apache.camel.component.file.remote.FtpOperations.retrieveFile(Ljava/lang/String;Lorg/apache/camel/Exchange;)Z >>> (FtpOperations.java:297) >>> at >>> org.apache.camel.component.file.GenericFileConsumer.processExchange(Lorg/apache/camel/Exchange;)V >>> (GenericFileConsumer.java:317) >>> at >>> org.apache.camel.component.file.remote.RemoteFileConsumer.processExchange(Lorg/apache/camel/Exchange;)V >>> (RemoteFileConsumer.java:94) >>> at >>> org.apache.camel.component.file.GenericFileConsumer.processBatch(Ljava/util/Queue;)I >>> (GenericFileConsumer.java:189) >>> at org.apache.camel.component.file.GenericFileConsumer.poll()I >>> (GenericFileConsumer.java:155) >>> at org.apache.camel.impl.ScheduledPollConsumer.doRun()V >>> (ScheduledPollConsumer.java:139) >>> at org.apache.camel.impl.ScheduledPollConsumer.run()V >>> (ScheduledPollConsumer.java:91) >>> >>> >>> The attached OOM-Camel.PNG shows what the Memory Analysis tells me. >>> >>> Am I missing something critical here? Or do I have to tune up the >>> memory for those kind >>> of cases? >>> >>> >>> Thanks and regards, Achim >>> -- >>> >>> Apache Karaf <http://karaf.apache.org/> Committer & PMC >>> OPS4J Pax Web <http://wiki.ops4j.org/display/paxweb/Pax+Web/> >>> Committer & Project Lead >>> OPS4J Pax for Vaadin >>> <http://team.ops4j.org/wiki/display/PAXVAADIN/Home> Commiter & Project >>> Lead >>> blog <http://notizblog.nierbeck.de/> >> >> >> >> -- >> Claus Ibsen >> ----------------- >> Red Hat, Inc. >> FuseSource is now part of Red Hat >> Email: [email protected] >> Web: http://fusesource.com >> Twitter: davsclaus >> Blog: http://davsclaus.com >> Author of Camel in Action: http://www.manning.com/ibsen > > > > -- > > Apache Karaf <http://karaf.apache.org/> Committer & PMC > OPS4J Pax Web <http://wiki.ops4j.org/display/paxweb/Pax+Web/> > Committer & Project Lead > OPS4J Pax for Vaadin > <http://team.ops4j.org/wiki/display/PAXVAADIN/Home> Commiter & Project > Lead > blog <http://notizblog.nierbeck.de/> -- Apache Karaf <http://karaf.apache.org/> Committer & PMC OPS4J Pax Web <http://wiki.ops4j.org/display/paxweb/Pax+Web/> Committer & Project Lead OPS4J Pax for Vaadin <http://team.ops4j.org/wiki/display/PAXVAADIN/Home> Commiter & Project Lead blog <http://notizblog.nierbeck.de/>
