Hi all,

I have used a lot time configuring a deadLetterChannel errorHandler and a
custom PollingConsumerPollStrategy for our PollingConsumers (mostly sFTP
and FTPS).

In combination with "throwExceptionOnConnectFailed=true" and
"consumer.bridgeErrorHandler=true" we have a generally robust setup, where
the Camel error-handler handles both consumer and producer errors. It does
redelivery and sends an alert when exhausted. This allows us to handle e.g.
connection timeouts to FTP servers in both consumer and producer in the
same controlled way.

Recently we had several situations with FTP error code 150 (e.g. socket
timeouts) which ends up in an org.apache.camel.component.file.
GenericFileOperationFailedException.

Similar if the FTP server replies with "550 File not found, access denied."
it results in the following exception:

org.apache.camel.component.file.GenericFileOperationFailedException: Cannot
retrieve file: RemoteFile[TestFil.XML] from: Endpoint[ftp://127.0.0.1:21/?
autoCreate=false&binary=true&consumer.bridgeErrorHandler=
true&delete=true&disconnect=true&doneFileName=%24%7Bfile%3Aname%7D.SEM&
<ftp://127.0.0.1/?autoCreate=false&binary=true&consumer.bridgeErrorHandler=true&delete=true&disconnect=true&doneFileName=%24%7Bfile%3Aname%7D.SEM&;>
 include=%28%3Fi%29.*%5C.XML&localWorkDirectory=c%3A%5Ctest%5Cftpworkdir&
maximumReconnectAttempts=0&passiveMode=true&password=xxxxxx&pollStrategy=%
23poll30times&readLock=none&reconnectDelay=240000&
scheduler=spring&scheduler.cron=30+*+*+*+*+MON-FRI&stepwise=false&
throwExceptionOnConnectFailed=true&username=testuser]

According to the log, the GenericFileOperationFailedException is directly
followed by the configured "onPrepareFailure" processor and then handled by
the "FatalFallbackErrorHandler". As a result the "commit" method of the
custom PollingConsumerPollStrategy is invoked and no redelivery attempted.

Is GenericFileOperationFailedException handled differently by the Camel
Error Handler than other exceptions? - Or is it a bug?

If working as designed: Can I somehow configure an onException section or
something different to override this behaviour?

I'm currently using camel 2.17.3.

Best regards,
Klaus

Reply via email to