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

mayur mohan commented on CAMEL-24403:
-------------------------------------

h2. Problem

When an IMAP message is expunged between fetch time and the on-completion 
commit callback, {code}IMAPMessage.setFlag(){code} throws 
{code}javax.mail.MessageRemovedException{code} whose {code}getMessage(){code} 
returns {code}null{code}. This surfaces in the Camel error log as:

{noformat}
Error occurred during committing mail message: 
com.sun.mail.imap.IMAPMessage@542a494d. 
Exchange[B5882D23412732A-0000000000000013]. Caused by: 
[javax.mail.MessageRemovedException - null]
{noformat}

h2. Stack Trace

{noformat}
javax.mail.MessageRemovedException
  at com.sun.mail.imap.IMAPMessage.checkExpunged(IMAPMessage.java:280)
  at com.sun.mail.imap.IMAPMessage.setFlags(IMAPMessage.java:1110)
  at javax.mail.Message.setFlag(Message.java:596)
  at 
org.apache.camel.component.mail.MailConsumer.processCommit(MailConsumer.java:506)
  at 
org.apache.camel.component.mail.MailConsumer$1.onComplete(MailConsumer.java:237)
  at 
org.apache.camel.support.UnitOfWorkHelper.doneSynchronization(UnitOfWorkHelper.java:104)
  at 
org.apache.camel.support.UnitOfWorkHelper.doneSynchronizations(UnitOfWorkHelper.java:89)
  at 
org.apache.camel.impl.engine.DefaultUnitOfWork.done(DefaultUnitOfWork.java:238)
  at org.apache.camel.support.UnitOfWorkHelper.doneUow(UnitOfWorkHelper.java:61)
  at 
org.apache.camel.impl.engine.CamelInternalProcessor$UnitOfWorkProcessorAdvice.after(CamelInternalProcessor.java:770)
  at 
org.apache.camel.impl.engine.CamelInternalProcessor$UnitOfWorkProcessorAdvice.after(CamelInternalProcessor.java:705)
  at 
org.apache.camel.impl.engine.CamelInternalProcessor$AsyncAfterTask.done(CamelInternalProcessor.java:263)
  at org.apache.camel.AsyncCallback.run(AsyncCallback.java:44)
  at 
org.apache.camel.impl.engine.DefaultReactiveExecutor$Worker.schedule(DefaultReactiveExecutor.java:193)
  at 
org.apache.camel.impl.engine.DefaultReactiveExecutor.scheduleMain(DefaultReactiveExecutor.java:64)
  at org.apache.camel.processor.Pipeline.process(Pipeline.java:185)
  at 
org.apache.camel.impl.engine.CamelInternalProcessor.process(CamelInternalProcessor.java:398)
  at 
org.apache.camel.impl.engine.DefaultAsyncProcessorAwaitManager.process(DefaultAsyncProcessorAwaitManager.java:83)
  at 
org.apache.camel.support.AsyncProcessorSupport.process(AsyncProcessorSupport.java:41)
  at 
org.apache.camel.component.mail.MailConsumer.processExchange(MailConsumer.java:449)
  at 
org.apache.camel.component.mail.MailConsumer.processBatch(MailConsumer.java:258)
  at org.apache.camel.component.mail.MailConsumer.poll(MailConsumer.java:165)
  at 
org.apache.camel.support.ScheduledPollConsumer.doRun(ScheduledPollConsumer.java:202)
  at 
org.apache.camel.support.ScheduledPollConsumer.run(ScheduledPollConsumer.java:116)
  at 
org.apache.camel.pollconsumer.quartz.QuartzScheduledPollConsumerJob.execute(QuartzScheduledPollConsumerJob.java:61)
  at org.quartz.core.JobRunShell.run(JobRunShell.java:202)
  at 
org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:573)
{noformat}

h2. Fix

Catch {code}MessageRemovedException{code} before the generic 
{code}MessagingException{code} handler in 
{code}MailConsumer.processCommit(){code} and wrap it with an explicit 
description. Expected log after fix:

{noformat}
Caused by: [javax.mail.MessagingException - Message already removed/expunged on 
server (no flag update possible)]
{noformat}

h2. PR

PR opened against apache/camel main with fix + 2 unit tests. Developed with AI 
assistance (Claude Code) per Apache Camel contributing guidelines.

> camel-mail: MessageRemovedException in processCommit causes null in error log
> -----------------------------------------------------------------------------
>
>                 Key: CAMEL-24403
>                 URL: https://issues.apache.org/jira/browse/CAMEL-24403
>             Project: Camel
>          Issue Type: Bug
>            Reporter: mayur mohan
>            Priority: Major
>
> test update



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to