[
https://issues.apache.org/jira/browse/CAMEL-18270?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17569402#comment-17569402
]
Florian Fiby commented on CAMEL-18270:
--------------------------------------
I was able to get the route working, with an small but not clean workaround, by
rethrowing t:
{{try {}}
{{if (stats) {}}
{{executor.pendingTasks.decrement();}}
{{}}}
{{if (LOG.isTraceEnabled()) {}}
{{LOG.trace("Worker #{} running: {}", number, polled);}}
{{}}}
{{polled.run();}}
{{} catch (Throwable t) {}}
{{LOG.error("Error executing reactive work due to {}. This exception is
ignored.",}}
{{t.getMessage(), t);}}
{{throw t;}}
{{}}}
> 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)