You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@camel.apache.org by Aaron Crickenberger <aa...@intalgent.com> on 2007/08/10 18:06:03 UTC
FileConsumer-to-FtpProducer bug
I'm trying to use Camel to poll an incoming directory for files, and
then FTP them elsewhere. I started with camel-example-spring, added
camel-ftp as a dependency, and modified MyRouteBuilder to look like so:
public class MyRouteBuilder extends RouteBuilder {
public void configure() {
from("file:/tmp/test/incoming/").to("ftp://admin@localhost:2021/?password=admin");
}
}
Putting a file in the "incoming" directory gives the following stack trace:
SEVERE: On delivery attempt: 0 caught: java.lang.ClassCastException:
org.apache.camel.component.file.remote.RemoteFileExchange
java.lang.ClassCastException:
org.apache.camel.component.file.remote.RemoteFileExchange
at
org.apache.camel.component.file.FileMessage.getExchange(FileMessage.java:47)
at
org.apache.camel.component.file.FileMessage.getExchange(FileMessage.java:29)
at
org.apache.camel.impl.MessageSupport.getBody(MessageSupport.java:48)
at
org.apache.camel.component.file.remote.FtpProducer.process(FtpProducer.java:42)
at
org.apache.camel.component.file.remote.FtpProducer.process(FtpProducer.java:37)
at
org.apache.camel.processor.SendProcessor.process(SendProcessor.java:65)
at
org.apache.camel.processor.DeadLetterChannel.process(DeadLetterChannel.java:78)
at
org.apache.camel.component.file.FileConsumer.pollFile(FileConsumer.java:81)
at
org.apache.camel.component.file.FileConsumer.pollFileOrDirectory(FileConsumer.java:51)
at
org.apache.camel.component.file.FileConsumer.poll(FileConsumer.java:45)
at
org.apache.camel.impl.ScheduledPollConsumer.run(ScheduledPollConsumer.java:63)
at
java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:417)
at
java.util.concurrent.FutureTask$Sync.innerRunAndReset(FutureTask.java:280)
at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:135)
at
java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$101(ScheduledThreadPoolExecutor.java:65)
at
java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.runPeriodic(ScheduledThreadPoolExecutor.java:142)
at
java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:166)
at
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:650)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:675)
at java.lang.Thread.run(Thread.java:613)
Most of the other Producers appear to work fine with plain ol'
Exchanges. I tried modifying FtpProducer to do the same, and things
started working. Great! However, I'm concerned this fixes the symptom,
and not the underlying problem.
Neither FtpProducer, SftpProducer nor FileProducer appear to really need
their specific Exchanges (unit tests still pass anyway.) However I
suspect CxfProducer and CxfInvokerProducer might exhibit the "deeper"
problem if I look further. Thoughts?
- aaron
Re: FileConsumer-to-FtpProducer bug
Posted by James Strachan <ja...@gmail.com>.
On 8/10/07, Aaron Crickenberger <aa...@intalgent.com> wrote:
> I'm trying to use Camel to poll an incoming directory for files, and
> then FTP them elsewhere. I started with camel-example-spring, added
> camel-ftp as a dependency, and modified MyRouteBuilder to look like so:
>
> public class MyRouteBuilder extends RouteBuilder {
> public void configure() {
>
> from("file:/tmp/test/incoming/").to("ftp://admin@localhost:2021/?password=admin");
> }
> }
>
> Putting a file in the "incoming" directory gives the following stack trace:
>
> SEVERE: On delivery attempt: 0 caught: java.lang.ClassCastException:
> org.apache.camel.component.file.remote.RemoteFileExchange
> java.lang.ClassCastException:
> org.apache.camel.component.file.remote.RemoteFileExchange
> at
> org.apache.camel.component.file.FileMessage.getExchange(FileMessage.java:47)
> at
> org.apache.camel.component.file.FileMessage.getExchange(FileMessage.java:29)
> at
> org.apache.camel.impl.MessageSupport.getBody(MessageSupport.java:48)
> at
> org.apache.camel.component.file.remote.FtpProducer.process(FtpProducer.java:42)
> at
> org.apache.camel.component.file.remote.FtpProducer.process(FtpProducer.java:37)
> at
> org.apache.camel.processor.SendProcessor.process(SendProcessor.java:65)
> at
> org.apache.camel.processor.DeadLetterChannel.process(DeadLetterChannel.java:78)
> at
> org.apache.camel.component.file.FileConsumer.pollFile(FileConsumer.java:81)
> at
> org.apache.camel.component.file.FileConsumer.pollFileOrDirectory(FileConsumer.java:51)
> at
> org.apache.camel.component.file.FileConsumer.poll(FileConsumer.java:45)
> at
> org.apache.camel.impl.ScheduledPollConsumer.run(ScheduledPollConsumer.java:63)
> at
> java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:417)
> at
> java.util.concurrent.FutureTask$Sync.innerRunAndReset(FutureTask.java:280)
> at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:135)
> at
> java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$101(ScheduledThreadPoolExecutor.java:65)
> at
> java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.runPeriodic(ScheduledThreadPoolExecutor.java:142)
> at
> java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:166)
> at
> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:650)
> at
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:675)
> at java.lang.Thread.run(Thread.java:613)
>
> Most of the other Producers appear to work fine with plain ol'
> Exchanges. I tried modifying FtpProducer to do the same, and things
> started working. Great! However, I'm concerned this fixes the symptom,
> and not the underlying problem.
>
> Neither FtpProducer, SftpProducer nor FileProducer appear to really need
> their specific Exchanges (unit tests still pass anyway.) However I
> suspect CxfProducer and CxfInvokerProducer might exhibit the "deeper"
> problem if I look further. Thoughts?
Another great catch Aaron! I raised a JIRA for this to track the
release it ends up in...
https://issues.apache.org/activemq/browse/CAMEL-98
it turned out to be a bit of a gremlin in the camel-core for how we
copy exchanges (we were mixing FileMessage inside RemoteFileExchange
which caused some gremlins).
I've added a test case and this one seems fixed now in trunk...
https://svn.apache.org/repos/asf/activemq/camel/trunk/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/FromFileToFtpTest.java
--
James
-------
http://macstrac.blogspot.com/