Uploaded image for project: 'James Server'
  1. James Server
  2. JAMES-1320

MimeMessageWrapper.writeTo(...) calls saveChanges() even if not needed

    XMLWordPrintableJSON

Details

    • Improvement
    • Status: Resolved
    • Major
    • Resolution: Fixed
    • 3.0-beta3
    • 3.0-beta4
    • None
    • None

    Description

      When MimeMessageWrapper.writeTo(...) is called we call saveChanges() everytime even when the messagewas not modified at all. This is not neeed and also can throw exceptions on malformated messages.

      See the related stacktrace:
      org.apache.james.queue.api.MailQueue$MailQueueException: Unable to enqueue mail;
      nested exception is:
      javax.mail.internet.ParseException: Expected ';', got "windows-1250"
      at org.apache.james.queue.file.FileMailQueue.enQueue(FileMailQueue.java:193)
      at org.apache.james.queue.file.FileMailQueue.enQueue(FileMailQueue.java:230)
      at org.apache.james.smtpserver.SendMailHandler.onMessage(SendMailHandler.java:64)
      at org.apache.james.smtpserver.DataLineJamesMessageHookHandler.processExtensions(DataLineJamesMessageHookHandler.java:178)
      at org.apache.james.smtpserver.DataLineJamesMessageHookHandler.onLine(DataLineJamesMessageHookHandler.java:96)
      at org.apache.james.protocols.smtp.core.DataCmdHandler$DataLineFilterWrapper.onLine(DataCmdHandler.java:76)
      at org.apache.james.protocols.smtp.core.DataCmdHandler$DataLineFilterWrapper.onLine(DataCmdHandler.java:61)
      at org.apache.james.protocols.smtp.core.ReceivedDataLineFilter.onLine(ReceivedDataLineFilter.java:54)
      at org.apache.james.protocols.smtp.core.DataCmdHandler$DataLineFilterWrapper.onLine(DataCmdHandler.java:76)
      at org.apache.james.protocols.smtp.core.DataCmdHandler$DataLineFilterWrapper.onLine(DataCmdHandler.java:61)
      at org.apache.james.protocols.smtp.core.esmtp.MailSizeEsmtpExtension.onLine(MailSizeEsmtpExtension.java:147)
      at org.apache.james.protocols.smtp.core.DataCmdHandler$DataLineFilterWrapper.onLine(DataCmdHandler.java:76)
      at org.apache.james.protocols.smtp.core.DataCmdHandler$DataLineFilterWrapper.onLine(DataCmdHandler.java:61)
      at org.apache.james.protocols.impl.LineHandlerUpstreamHandler.messageReceived(LineHandlerUpstreamHandler.java:57)
      at org.jboss.netty.channel.SimpleChannelUpstreamHandler.handleUpstream(SimpleChannelUpstreamHandler.java:80)
      at org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:545)
      at org.jboss.netty.channel.DefaultChannelPipeline$DefaultChannelHandlerContext.sendUpstream(DefaultChannelPipeline.java:754)
      at org.jboss.netty.handler.execution.ChannelEventRunnable.run(ChannelEventRunnable.java:69)
      at org.jboss.netty.handler.execution.OrderedMemoryAwareThreadPoolExecutor$ChildExecutor.run(OrderedMemoryAwareThreadPoolExecutor.java:316)
      at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
      at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
      at java.lang.Thread.run(Thread.java:679)
      Caused by: javax.mail.internet.ParseException: Expected ';', got "windows-1250"
      at javax.mail.internet.ParameterList.<init>(ParameterList.java:289)
      at javax.mail.internet.ContentType.<init>(ContentType.java:114)
      at javax.mail.internet.MimeBodyPart.updateHeaders(MimeBodyPart.java:1322)
      at javax.mail.internet.MimeBodyPart.updateHeaders(MimeBodyPart.java:1021)
      at javax.mail.internet.MimeMultipart.updateHeaders(MimeMultipart.java:419)
      at javax.mail.internet.MimeBodyPart.updateHeaders(MimeBodyPart.java:1345)
      at javax.mail.internet.MimeBodyPart.updateHeaders(MimeBodyPart.java:1021)
      at javax.mail.internet.MimeMultipart.updateHeaders(MimeMultipart.java:419)
      at javax.mail.internet.MimeBodyPart.updateHeaders(MimeBodyPart.java:1345)
      at javax.mail.internet.MimeMessage.updateHeaders(MimeMessage.java:2106)
      at javax.mail.internet.MimeMessage.saveChanges(MimeMessage.java:2074)
      at org.apache.james.core.MimeMessageWrapper.writeTo(MimeMessageWrapper.java:295)
      at org.apache.james.core.MimeMessageWrapper.writeTo(MimeMessageWrapper.java:290)
      at org.apache.james.core.MimeMessageWrapper.writeTo(MimeMessageWrapper.java:286)
      at org.apache.james.core.MimeMessageWrapper.writeTo(MimeMessageWrapper.java:271)
      at org.apache.james.core.MimeMessageCopyOnWriteProxy.writeTo(MimeMessageCopyOnWriteProxy.java:184)
      at org.apache.james.queue.file.FileMailQueue.enQueue(FileMailQueue.java:161)

      Attachments

        Activity

          People

            norman Norman Maurer
            norman Norman Maurer
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: