[
https://issues.apache.org/jira/browse/CAMEL-10440?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Claus Ibsen resolved CAMEL-10440.
---------------------------------
Resolution: Won't Fix
Redeliveries from error handler is not on the consumer side, its for producer.
You have a custom solution for how you want it on your system.
> ftp component: Errors during file download bypass redelivery and goes
> directly to the deadletterchannel
> --------------------------------------------------------------------------------------------------------
>
> Key: CAMEL-10440
> URL: https://issues.apache.org/jira/browse/CAMEL-10440
> Project: Camel
> Issue Type: Bug
> Components: camel-ftp
> Affects Versions: 2.17.3, 2.18.0
> Environment: Behavior verified on MS Windows 7 (Spring Boot based
> application) and MacOS (set based on "camel-example-ftp").
> Reporter: Klaus Johansen
> Priority: Minor
> Attachments: ConsumerPollStrategy.java, MyFtpServer.java,
> MyFtpServerRouteBuilder.java
>
>
> When the FTP consumer is hit by an error during download of a file (eg.
> socket timeout or because of missing read permission on the file) a
> GenericFileOperationFailedException is thrown. Unfortunately is impossible to
> recover from this error using redelivery because the message is forced onto
> the deadletterchannel (marked exhausted?)
> When using consumer.bridgeErrorHandler=true redelivery works fine when the
> errors happens during the polling phase (eg. connection timeouts and missing
> directories).
> When the error goes directly to the deadletterchannel the rollback method of
> the PollingConsumerPollStrategy is never called. This makes it difficult to
> access the consumer and force a disconnect in order to recover from the error
> situtation (like it is done by RemoteFilePollingConsumerPollStrategy).
> [DefaultQuartzScheduler-camel-1_Worker-1] INFO
> org.apache.camel.example.ftp.ConsumerPollStrategy - Poll starting for
> endpoint:
> ftp://localhost:21/testdir?autoCreate=false&consumer.bridgeErrorHandler=true&fil...
> [DefaultQuartzScheduler-camel-1_Worker-1] DEBUG
> org.apache.camel.component.file.remote.FtpConsumer - Exception checking
> connection status: File operation failed: null Connection is not open. Code: 0
> [DefaultQuartzScheduler-camel-1_Worker-1] DEBUG
> org.apache.camel.component.file.remote.FtpConsumer - Not connected/logged in,
> connecting to: ftp://testuser@localhost:21
> [DefaultQuartzScheduler-camel-1_Worker-1] DEBUG
> org.apache.camel.component.file.remote.FtpConsumer - Connected and logged in
> to: ftp://testuser@localhost:21
> [DefaultQuartzScheduler-camel-1_Worker-1] DEBUG
> org.apache.camel.component.file.remote.FtpConsumer - Took 0.151 seconds to
> poll: testdir
> [DefaultQuartzScheduler-camel-1_Worker-1] DEBUG
> org.apache.camel.component.file.remote.FtpConsumer - Total 1 files to consume
> [DefaultQuartzScheduler-camel-1_Worker-1] DEBUG
> org.apache.camel.processor.DeadLetterChannel - Failed delivery for
> (MessageId: ID-Klauss-MacBook-Pro-2-local-52649-1478165172245-0-2 on
> ExchangeId: ID-Klauss-MacBook-Pro-2-local-52649-1478165172245-0-3). On
> delivery attempt: 0 caught:
> org.apache.camel.component.file.GenericFileOperationFailedException: Cannot
> retrieve file: RemoteFile[testfile.txt] from:
> ftp://localhost:21/testdir?autoCreate=false&consumer.bridgeErrorHandler=true&fileName=testfile.txt&password=xxxxxx&pollStrategy=%23try3times&processStrategy=%23myProcessStrategy&scheduler=quartz2&scheduler.cron=15+0%2F1+*+%3F+*+*&throwExceptionOnConnectFailed=true&timeout=5000&username=testuser
> org.apache.camel.component.file.GenericFileOperationFailedException: Cannot
> retrieve file: RemoteFile[testfile.txt] from:
> ftp://localhost:21/testdir?autoCreate=false&consumer.bridgeErrorHandler=true&fileName=testfile.txt&password=xxxxxx&pollStrategy=%23try3times&processStrategy=%23myProcessStrategy&scheduler=quartz2&scheduler.cron=15+0%2F1+*+%3F+*+*&throwExceptionOnConnectFailed=true&timeout=5000&username=testuser
> at
> org.apache.camel.component.file.GenericFileConsumer.processExchange(GenericFileConsumer.java:436)
> at
> org.apache.camel.component.file.remote.RemoteFileConsumer.processExchange(RemoteFileConsumer.java:137)
> at
> org.apache.camel.component.file.GenericFileConsumer.processBatch(GenericFileConsumer.java:227)
> at
> org.apache.camel.component.file.GenericFileConsumer.poll(GenericFileConsumer.java:191)
> at
> org.apache.camel.impl.ScheduledPollConsumer.doRun(ScheduledPollConsumer.java:175)
> at
> org.apache.camel.impl.ScheduledPollConsumer.run(ScheduledPollConsumer.java:102)
> at
> org.apache.camel.pollconsumer.quartz2.QuartzScheduledPollConsumerJob.execute(QuartzScheduledPollConsumerJob.java:61)
> at org.quartz.core.JobRunShell.run(JobRunShell.java:202)
> at
> org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:573)
> [DefaultQuartzScheduler-camel-1_Worker-1] DEBUG
> org.apache.camel.processor.SendProcessor - >>>> direct://deadletter
> Exchange[ID-Klauss-MacBook-Pro-2-local-52649-1478165172245-0-3]
> [DefaultQuartzScheduler-camel-1_Worker-1] INFO
> org.apache.camel.processor.interceptor.Tracer -
> ID-Klauss-MacBook-Pro-2-local-52649-1478165172245-0-3 >>> (route1)
> from(ftp://localhost:21/testdir?autoCreate=false&consumer.bridgeErrorHandler=true&fileName=testfile.txt&password=testpass&pollStrategy=%23try3times&processStrategy=%23myProcessStrategy&scheduler=quartz2&scheduler.cron=15+0%2F1+*+%3F+*+*&throwExceptionOnConnectFailed=true&timeout=5000&username=testuser)
> --> log[On dead letter!!] <<< Pattern:InOnly,
> Headers:{breadcrumbId=ID-Klauss-MacBook-Pro-2-local-52649-1478165172245-0-2},
> BodyType:String, Body:Error processing file RemoteFile[testfile.txt] due to
> Cannot retrieve file: RemoteFile[testfile.txt] from:
> ftp://localhost:21/testdir?autoCreate=false&consumer.bridgeErrorHandler=true&fileName=testfile.txt&password=xxxxxx&pollStrategy=%23try3times&processStrategy=%23myProcessStrategy&scheduler=quartz2&scheduler.cron=15+0%2F1+*+%3F+*+*&throwExceptionOnConnectFailed=true&timeout=5000&username=testuser
> [DefaultQuartzScheduler-camel-1_Worker-1] INFO route1 - On dead letter!!
> [DefaultQuartzScheduler-camel-1_Worker-1] DEBUG
> org.apache.camel.processor.Pipeline - Message exchange has failed: so
> breaking out of pipeline for exchange:
> Exchange[ID-Klauss-MacBook-Pro-2-local-52649-1478165172245-0-3] Handled by
> the error handler.
> [DefaultQuartzScheduler-camel-1_Worker-1] INFO
> org.apache.camel.example.ftp.ConsumerPollStrategy - Commiting 1 msgs for
> endpoint:
> ftp://localhost:21/testdir?autoCreate=false&consumer.bridgeErrorHandler=true&fil...
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)