[
https://issues.apache.org/jira/browse/CAMEL-18270?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17568833#comment-17568833
]
Florian Fiby commented on CAMEL-18270:
--------------------------------------
There was an other incident with same blocking outcome, the route was blocked
and no new mails were processed . Camel 3.4 is also affected:
{{2022-07-18 16:21:24.762 WARN 1 --- [Camel (PROD) thread #1 -
imaps://outlook.office365.com:993] o.a.c.i.engine.DefaultReactiveExecutor :
Error executing reactive work due to Error accessing headers due to: * BYE
Jakarta Mail Exception: java.net.SocketTimeoutE}}
{{{}xception: Read timed out. This exception is
ignored.{}}}{{{}org.apache.camel.RuntimeCamelException: Error accessing headers
due to: * BYE Jakarta Mail Exception: java.net.SocketTimeoutException: Read
timed out{}}}
{{ at
org.apache.camel.component.mail.MailMessage.populateInitialHeaders(MailMessage.java:107)
~[camel-mail-3.4.6.jar!/:3.4.6]}}
{{ at
org.apache.camel.support.DefaultMessage.createHeaders(DefaultMessage.java:310)
~[camel-support-3.4.6.jar!/:3.4.6]}}
{{ at
org.apache.camel.support.DefaultMessage.hasHeaders(DefaultMessage.java:282)
~[camel-support-3.4.6.jar!/:3.4.6]}}
{{ at
org.apache.camel.support.DefaultExchange.copy(DefaultExchange.java:129)
~[camel-support-3.4.6.jar!/:3.4.6]}}
{{ at
org.apache.camel.support.ExchangeHelper.createCopy(ExchangeHelper.java:330)
~[camel-support-3.4.6.jar!/:3.4.6]}}
{{ at
org.apache.camel.processor.errorhandler.RedeliveryErrorHandler.defensiveCopyExchangeIfNeeded(RedeliveryErrorHandler.java:266)
~[camel-base-3.4.6.jar!/:3.4.6]}}
{{ at
org.apache.camel.processor.errorhandler.RedeliveryErrorHandler$RedeliveryTask.<init>(RedeliveryErrorHandler.java:590)
~[camel-base-3.4.6.jar!/:3.4.6]}}
{{ at
org.apache.camel.processor.errorhandler.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:171)
~[camel-base-3.4.6.jar!/:3.4.6]}}
{{ at
org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:286)
~[camel-base-3.4.6.jar!/:3.4.6]}}
{{ at
org.apache.camel.processor.Pipeline$PipelineTask.run(Pipeline.java:90)
~[camel-base-3.4.6.jar!/:3.4.6]}}
{{ at
org.apache.camel.impl.engine.DefaultReactiveExecutor$Worker.schedule(DefaultReactiveExecutor.java:148)
~[camel-base-3.4.6.jar!/:3.4.6]}}
{{ at
org.apache.camel.impl.engine.DefaultReactiveExecutor.scheduleMain(DefaultReactiveExecutor.java:60)
~[camel-base-3.4.6.jar!/:3.4.6]}}
{{ at org.apache.camel.processor.Pipeline.process(Pipeline.java:147)
~[camel-base-3.4.6.jar!/:3.4.6]}}
{{ at
org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:286)
~[camel-base-3.4.6.jar!/:3.4.6]}}
{{ at
org.apache.camel.impl.engine.DefaultAsyncProcessorAwaitManager.process(DefaultAsyncProcessorAwaitManager.java:83)
~[camel-base-3.4.6.jar!/:3.4.6]}}
{{ at
org.apache.camel.support.AsyncProcessorSupport.process(AsyncProcessorSupport.java:40)
~[camel-support-3.4.6.jar!/:3.4.6]}}
{{ at
org.apache.camel.component.mail.MailConsumer.processExchange(MailConsumer.java:431)
~[camel-mail-3.4.6.jar!/:3.4.6]}}
{{ at
org.apache.camel.component.mail.MailConsumer.processBatch(MailConsumer.java:248)
~[camel-mail-3.4.6.jar!/:3.4.6]}}
{{ at
org.apache.camel.component.mail.MailConsumer.poll(MailConsumer.java:161)
~[camel-mail-3.4.6.jar!/:3.4.6]}}
{{ at
org.apache.camel.support.ScheduledPollConsumer.doRun(ScheduledPollConsumer.java:187)
~[camel-support-3.4.6.jar!/:3.4.6]}}
{{ at
org.apache.camel.support.ScheduledPollConsumer.run(ScheduledPollConsumer.java:106)
~[camel-support-3.4.6.jar!/:3.4.6]}}
{{ at
java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
~[na:na]}}
{{ at
java.base/java.util.concurrent.FutureTask.runAndReset(FutureTask.java:305)
~[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.FolderClosedException: * BYE Jakarta Mail Exception:
java.net.SocketTimeoutException: Read timed out}}
{{ at com.sun.mail.imap.IMAPMessage.loadHeaders(IMAPMessage.java:1575)
~[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:610)
~[camel-mail-3.4.6.jar!/:3.4.6]}}
{{ at
org.apache.camel.component.mail.MailMessage.populateInitialHeaders(MailMessage.java:104)
~[camel-mail-3.4.6.jar!/:3.4.6]}}
{{ ... 26 common frames omitted}}
> 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)