[ 
https://issues.apache.org/jira/browse/CAMEL-18270?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17572538#comment-17572538
 ] 

Claus Ibsen commented on CAMEL-18270:
-------------------------------------

Thanks for reporting and the detailed analysis.



> 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
>            Assignee: Claus Ibsen
>            Priority: Major
>             Fix For: 3.18.1, 3.19.0
>
>
>  
> 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)

Reply via email to