[
https://issues.apache.org/jira/browse/CAMEL-18270?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17569051#comment-17569051
]
Florian Fiby commented on CAMEL-18270:
--------------------------------------
Hi [~davsclaus],
I'm searching the camel code for possible workarounds for this issue and found
https://issues.apache.org/jira/browse/CAMEL-16938 you worked on. So maybe you
can help with my reported issue?
As far as I understand it by now, each mail is processed with a thread and if
the RuntimeCamelException occurs, the route is blocked by waiting for the
thread and does not process any new mails.
The issue seams located in DefaultReactiveExecutor.scheduleMain by catching the
RuntimeCamelException without cleaning up the thread. Therefore this could also
affect other camel components, not just mail.
My issue could be created by wrong mailserver handling or server side issues,
but the blocking state of the route can't be right.
> IMAP skipFailedMessage=true, but route blocked if mail is moved while download
> ------------------------------------------------------------------------------
>
> Key: CAMEL-18270
> URL: https://issues.apache.org/jira/browse/CAMEL-18270
> Project: Camel
> Issue Type: Bug
> Components: camel-mail
> Affects Versions: 3.18.0
> Reporter: Florian Fiby
> Priority: Major
>
>
> Our imap mail route on the production system gets blocked when someone or an
> other systems moves / deletes an email from the inbox, while the camel mail
> route is loading the mail. As we do not have full control on the mailboxes we
> enabled skipFailedMessage but the issue remains.
> The following exception is written is the log, but the mail consumer is
> blocked. The issue can only be resolved by a restart of the service.
> {code:java}
> 2022-07-14 09:17:28.714 WARN 5465 --- [fice365.com:993]
> o.a.c.i.engine.DefaultReactiveExecutor : Error executing reactive work due
> to Error accessing headers due to: Cannot load header. This exception is
> ignored.
> org.apache.camel.RuntimeCamelException: Error accessing headers due to:
> Cannot load header
> at
> org.apache.camel.component.mail.MailMessage.populateInitialHeaders(MailMessage.java:107)
> ~[camel-mail-3.18.0.jar:3.18.0]
> at
> org.apache.camel.support.DefaultMessage.createHeaders(DefaultMessage.java:331)
> ~[camel-support-3.18.0.jar:3.18.0]
> at
> org.apache.camel.support.DefaultMessage.hasHeaders(DefaultMessage.java:305)
> ~[camel-support-3.18.0.jar:3.18.0]
> at
> org.apache.camel.support.AbstractExchange.copy(AbstractExchange.java:140)
> ~[camel-support-3.18.0.jar:3.18.0]
> at org.apache.camel.support.DefaultExchange.copy(DefaultExchange.java:27)
> ~[camel-support-3.18.0.jar:3.18.0]
> at
> org.apache.camel.support.ExchangeHelper.createCopy(ExchangeHelper.java:322)
> ~[camel-support-3.18.0.jar:3.18.0]
> at
> org.apache.camel.processor.errorhandler.RedeliveryErrorHandler.defensiveCopyExchangeIfNeeded(RedeliveryErrorHandler.java:304)
> ~[camel-core-processor-3.18.0.jar:3.18.0]
> at
> org.apache.camel.processor.errorhandler.RedeliveryErrorHandler$RedeliveryTask.prepare(RedeliveryErrorHandler.java:680)
> ~[camel-core-processor-3.18.0.jar:3.18.0]
> at
> org.apache.camel.processor.PrototypeTaskFactory.acquire(PrototypeTaskFactory.java:29)
> ~[camel-core-processor-3.18.0.jar:3.18.0]
> at
> org.apache.camel.processor.errorhandler.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:210)
> ~[camel-core-processor-3.18.0.jar:3.18.0]
> at
> org.apache.camel.impl.engine.CamelInternalProcessor.process(CamelInternalProcessor.java:399)
> ~[camel-base-engine-3.18.0.jar:3.18.0]
> at
> org.apache.camel.processor.Pipeline$PipelineTask.run(Pipeline.java:109)
> ~[camel-core-processor-3.18.0.jar:3.18.0]
> at
> org.apache.camel.impl.engine.DefaultReactiveExecutor$Worker.schedule(DefaultReactiveExecutor.java:189)
> ~[camel-base-engine-3.18.0.jar:3.18.0]
> at
> org.apache.camel.impl.engine.DefaultReactiveExecutor.scheduleMain(DefaultReactiveExecutor.java:61)
> ~[camel-base-engine-3.18.0.jar:3.18.0]
> at org.apache.camel.processor.Pipeline.process(Pipeline.java:184)
> ~[camel-core-processor-3.18.0.jar:3.18.0]
> at
> org.apache.camel.impl.engine.CamelInternalProcessor.process(CamelInternalProcessor.java:399)
> ~[camel-base-engine-3.18.0.jar:3.18.0]
> at
> org.apache.camel.impl.engine.DefaultAsyncProcessorAwaitManager.process(DefaultAsyncProcessorAwaitManager.java:83)
> ~[camel-base-engine-3.18.0.jar:3.18.0]
> at
> org.apache.camel.support.AsyncProcessorSupport.process(AsyncProcessorSupport.java:41)
> ~[camel-support-3.18.0.jar:3.18.0]
> at
> org.apache.camel.component.mail.MailConsumer.processExchange(MailConsumer.java:451)
> ~[camel-mail-3.18.0.jar:3.18.0]
> at
> org.apache.camel.component.mail.MailConsumer.processBatch(MailConsumer.java:260)
> ~[camel-mail-3.18.0.jar:3.18.0]
> at
> org.apache.camel.component.mail.MailConsumer.poll(MailConsumer.java:165)
> ~[camel-mail-3.18.0.jar:3.18.0]
> at
> org.apache.camel.support.ScheduledPollConsumer.doRun(ScheduledPollConsumer.java:202)
> ~[camel-support-3.18.0.jar:3.18.0]
> at
> org.apache.camel.support.ScheduledPollConsumer.run(ScheduledPollConsumer.java:116)
> ~[camel-support-3.18.0.jar:3.18.0]
> at
> java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
> ~[na:na]
> at
> java.base/java.util.concurrent.FutureTask.runAndReset$$$capture(FutureTask.java:305)
> ~[na:na]
> at java.base/java.util.concurrent.FutureTask.runAndReset(FutureTask.java)
> ~[na:na]
> at
> java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:305)
> ~[na:na]
> at
> java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
> ~[na:na]
> at
> java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
> ~[na:na]
> at java.base/java.lang.Thread.run(Thread.java:829) ~[na:na]
> Caused by: javax.mail.MessagingException: Cannot load header
> at com.sun.mail.imap.IMAPMessage.loadHeaders(IMAPMessage.java:1583)
> ~[jakarta.mail-1.6.5.jar:1.6.5]
> at com.sun.mail.imap.IMAPMessage.getAllHeaders(IMAPMessage.java:992)
> ~[jakarta.mail-1.6.5.jar:1.6.5]
> at
> org.apache.camel.component.mail.MailBinding.extractHeadersFromMail(MailBinding.java:649)
> ~[camel-mail-3.18.0.jar:3.18.0]
> at
> org.apache.camel.component.mail.MailMessage.populateInitialHeaders(MailMessage.java:104)
> ~[camel-mail-3.18.0.jar:3.18.0]
> ... 29 common frames omitted
> {code}
>
> I've reproduced the issue with a break point on MailConsumer.processExchange.
> When the process hits this break point, I've move the mail and the route was
> blocked.
> I think the route blocks on DefaultAsyncProcessorAwaitManager.await Line 107,
> but I'm not sure about it.
> The expected behavior for me with skipFailedMessage=true, would be an ERROR
> in the log and processing of the next mail.
> Is this a bug or is there a workaround for this issue?
> Maybe this is related with CAMEL-16829
>
--
This message was sent by Atlassian Jira
(v8.20.10#820010)