Uploaded image for project: 'Jira Service Management Data Center'
  1. Jira Service Management Data Center
  2. JSDSERVER-1853

Incoming mail stops processing when UTF-7 encoding is encountered

    XMLWordPrintable

Details

    Description

      The JIRA Service Desk mail handler stops processing messages when it encounters a email encoded in UTF-7.

      When a message encoded in UTF-7 is encountered, a stacktrace is thrown and the processor stops running. Any messages received after the UTF-7 message are not processed.

      2015-04-22 22:18:32,991 atlassian-scheduler-quartz1.clustered_Worker-3 DEBUG ServiceRunner     [mail.incoming.jepp.processor] Found 3 mail item(s) for processing ...
      2015-04-22 22:18:32,992 atlassian-scheduler-quartz1.clustered_Worker-3 DEBUG ServiceRunner     [mail.incoming.jepp.processor] Starts processing mail item [id: 99] ...
      2015-04-22 22:18:32,992 atlassian-scheduler-quartz1.clustered_Worker-3 DEBUG ServiceRunner     [mail.incoming.jepp.processor] Checking if mail item [id: 99] is a mail loop ...
      2015-04-22 22:18:32,992 atlassian-scheduler-quartz1.clustered_Worker-3 DEBUG ServiceRunner     [mail.incoming.jepp.processor] Filtering message [message number: 0] using mail filter [com.atlassian.servicedesk.internal.feature.emailchannel.emailplatform.filter.SDAutoReplyFilter]...
      2015-04-22 22:18:32,992 atlassian-scheduler-quartz1.clustered_Worker-3 DEBUG ServiceRunner     [mail.incoming.jepp.processor] Finished filtering message [message number: 0] using mail filter [com.atlassian.servicedesk.internal.feature.emailchannel.emailplatform.filter.SDAutoReplyFilter]
      2015-04-22 22:18:32,992 atlassian-scheduler-quartz1.clustered_Worker-3 DEBUG ServiceRunner     [mail.incoming.jepp.processor] Filtering message [message number: 0] using mail filter [com.atlassian.servicedesk.internal.feature.emailchannel.emailplatform.filter.SDBulkFilter]...
      2015-04-22 22:18:32,992 atlassian-scheduler-quartz1.clustered_Worker-3 DEBUG ServiceRunner     [mail.incoming.jepp.processor] Finished filtering message [message number: 0] using mail filter [com.atlassian.servicedesk.internal.feature.emailchannel.emailplatform.filter.SDBulkFilter]
      2015-04-22 22:18:32,992 atlassian-scheduler-quartz1.clustered_Worker-3 DEBUG ServiceRunner     [mail.incoming.jepp.processor] Filtering message [message number: 0] using mail filter [com.atlassian.servicedesk.internal.feature.emailchannel.emailplatform.filter.SDSentFromJIRAFilter]...
      2015-04-22 22:18:32,993 atlassian-scheduler-quartz1.clustered_Worker-3 DEBUG ServiceRunner     [mail.incoming.jepp.processor] Finished filtering message [message number: 0] using mail filter [com.atlassian.servicedesk.internal.feature.emailchannel.emailplatform.filter.SDSentFromJIRAFilter]
      2015-04-22 22:18:32,993 atlassian-scheduler-quartz1.clustered_Worker-3 DEBUG ServiceRunner     [mail.incoming.jepp.processor] Filtering message [message number: 0] using mail filter [com.atlassian.jira.mail.processor.api.handler.DeliveryStatusMailFilter]...
      2015-04-22 22:18:32,993 atlassian-scheduler-quartz1.clustered_Worker-3 DEBUG ServiceRunner     [mail.incoming.jepp.processor] Finished filtering message [message number: 0] using mail filter [com.atlassian.jira.mail.processor.api.handler.DeliveryStatusMailFilter]
      2015-04-22 22:18:32,994 atlassian-scheduler-quartz1.clustered_Worker-3 DEBUG ServiceRunner     [mail.incoming.jepp.processor] Handling message [message number: 0] using main handler [com.atlassian.servicedesk.internal.feature.emailchannel.emailplatform.handler.SDMailHandler]...
      2015-04-22 22:18:33,031 atlassian-scheduler-quartz1.clustered_Worker-3 ERROR anonymous     [mail.incoming.jepp.processor] MailJobRunner Failed
      java.io.UnsupportedEncodingException: utf-7
      	at sun.nio.cs.StreamDecoder.forInputStreamReader(Unknown Source)
      	at java.io.InputStreamReader.<init>(Unknown Source)
      	at com.sun.mail.handlers.text_plain.getContent(text_plain.java:107)
      	at javax.activation.DataSourceDataContentHandler.getContent(Unknown Source)
      	at javax.activation.DataHandler.getContent(Unknown Source)
      	at javax.mail.internet.MimeMessage.getContent(MimeMessage.java:1420)
      	at com.atlassian.servicedesk.squalor.email.ServiceDeskMailUtils.getAttachments(ServiceDeskMailUtils.java:258)
      	at com.atlassian.servicedesk.internal.feature.emailchannel.IncomingEmailManager.createIssueInJiraContext(IncomingEmailManager.scala:197)
      	at com.atlassian.servicedesk.internal.feature.emailchannel.IncomingEmailManager.createIssueFromEmail(IncomingEmailManager.scala:177)
      	at com.atlassian.servicedesk.internal.feature.emailchannel.IncomingEmailService$$anonfun$crea$$$$311dbd58eb432d26726307e187be9da$$$$anonfun$apply$13$$anonfun$apply$15.apply(IncomingEmailService.scala:113)
      	at com.atlassian.servicedesk.internal.feature.emailchannel.IncomingEmailService$$anonfun$crea$$$$311dbd58eb432d26726307e187be9da$$$$anonfun$apply$13$$anonfun$apply$15.apply(IncomingEmailService.scala:112)
      	at scalaz.$bslash$div$class.flatMap(Either.scala:117)
      	at scalaz.$bslash$div$minus.flatMap(Either.scala:283)
      	at com.atlassian.servicedesk.internal.feature.emailchannel.IncomingEmailService$$anonfun$createIssueFromEmail$2$$anonfun$apply$10$$anonfun$apply$11$$anonfun$apply$12$$anonfun$apply$13.apply(IncomingEmailService.scala:112)
      	at com.atlassian.servicedesk.internal.feature.emailchannel.IncomingEmailService$$anonfun$createIssueFromEmail$2$$anonfun$apply$10$$anonfun$apply$11$$anonfun$apply$12$$anonfun$apply$13.apply(IncomingEmailService.scala:110)
      	at com.atlassian.servicedesk.internal.feature.emailchannel.IncomingEmailService$$anonfun$com$$$$$cd2731b58a8142effad79be1482acd$$$$inEmailContext$1$$anonfun$apply$26.apply(IncomingEmailService.scala:164)
      	at com.atlassian.servicedesk.internal.utils.context.PortalContextUtil$.inPortalContext(PortalContextUtil.scala:23)
      	at com.atlassian.servicedesk.internal.feature.emailchannel.IncomingEmailService$$anonfun$com$atlassian$servicedesk$internal$feature$emailchannel$IncomingEmailService$$inEmailContext$1.apply(IncomingEmailService.scala:163)
      	at com.atlassian.servicedesk.internal.utils.context.AuthenticationContextUtil$.runAsUser(AuthenticationContextUtil.scala:15)
      	at com.atlassian.servicedesk.internal.feature.emailchannel.IncomingEmailService.com$atlassian$servicedesk$internal$feature$emailchannel$IncomingEmailService$$inEmailContext(IncomingEmailService.scala:161)
      	at com.atlassian.servicedesk.internal.feature.emailchannel.IncomingEmailService$$anonfun$createIssueFromEmail$2$$anonfun$apply$10$$anonfun$apply$11$$anonfun$apply$12.apply(IncomingEmailService.scala:108)
      	at com.atlassian.servicedesk.internal.feature.emailchannel.IncomingEmailService$$anonfun$createIssueFromEmail$2$$anonfun$apply$10$$anonfun$apply$11$$anonfun$apply$12.apply(IncomingEmailService.scala:107)
      	at scalaz.$bslash$div$class.flatMap(Either.scala:117)
      	at scalaz.$bslash$div$minus.flatMap(Either.scala:283)
      	at com.atlassian.servicedesk.internal.feature.emailchannel.IncomingEmailService$$anonfun$createIssueFromEmail$2$$anonfun$apply$10$$anonfun$apply$11.apply(IncomingEmailService.scala:107)
      	at com.atlassian.servicedesk.internal.feature.emailchannel.IncomingEmailService$$anonfun$createIssueFromEmail$2$$anonfun$apply$10$$anonfun$apply$11.apply(IncomingEmailService.scala:106)
      	at scalaz.$bslash$div$class.flatMap(Either.scala:117)
      	at scalaz.$bslash$div$minus.flatMap(Either.scala:283)
      	at com.atlassian.servicedesk.internal.feature.emailchannel.IncomingEmailService$$anonfun$createIssueFromEmail$2$$anonfun$apply$10.apply(IncomingEmailService.scala:106)
      	at com.atlassian.servicedesk.internal.feature.emailchannel.IncomingEmailService$$anonfun$createIssueFromEmail$2$$anonfun$apply$10.apply(IncomingEmailService.scala:105)
      	at scalaz.$bslash$div$class.flatMap(Either.scala:117)
      	at scalaz.$bslash$div$minus.flatMap(Either.scala:283)
      	at com.atlassian.servicedesk.internal.feature.emailchannel.IncomingEmailService$$anonfun$createIssueFromEmail$2.apply(IncomingEmailService.scala:105)
      	at com.atlassian.servicedesk.internal.feature.emailchannel.IncomingEmailService$$anonfun$createIssueFromEmail$2.apply(IncomingEmailService.scala:104)
      	at scalaz.$bslash$div$class.flatMap(Either.scala:117)
      	at scalaz.$bslash$div$minus.flatMap(Either.scala:283)
      	at com.atlassian.servicedesk.internal.feature.emailchannel.IncomingEmailService.createIssueFromEmail(IncomingEmailService.scala:104)
      	at com.atlassian.servicedesk.internal.feature.emailchannel.IncomingEmailService.processEmail(IncomingEmailService.scala:75)
      	at com.atlassian.servicedesk.internal.feature.emailchannel.emailplatform.handler.SDMailHandler.processMessage(SDMailHandler.scala:41)
      	at com.atlassian.servicedesk.internal.feature.emailchannel.emailplatform.handler.SDMailHandler.handleNewMessage(SDMailHandler.scala:25)
      	at com.atlassian.jira.internal.mail.processor.feature.processor.MailHandlerWorker.handle(MailHandlerWorker.java:67)
      	at com.atlassian.jira.internal.mail.processor.feature.processor.MailProcessorWorker.processMailItem(MailProcessorWorker.java:149)
      	at com.atlassian.jira.internal.mail.processor.feature.processor.MailProcessorWorker.process(MailProcessorWorker.java:83)
      	at com.atlassian.jira.internal.mail.processor.feature.processor.MailProcessorService.run(MailProcessorService.java:41)
      	at com.atlassian.jira.internal.mail.processor.services.MailProcessorExecutor.run(MailProcessorExecutor.java:34)
      	at com.atlassian.jira.internal.mail.processor.services.AbstractMailExecutor.execute(AbstractMailExecutor.java:48)
      	at com.atlassian.jira.internal.mail.processor.services.MailJobRunner.runJob(MailJobRunner.java:38)
      	at com.atlassian.scheduler.core.JobLauncher.runJob(JobLauncher.java:135)
      	at com.atlassian.scheduler.core.JobLauncher.launchAndBuildResponse(JobLauncher.java:101)
      	at com.atlassian.scheduler.core.JobLauncher.launch(JobLauncher.java:80)
      	at com.atlassian.scheduler.quartz1.Quartz1Job.execute(Quartz1Job.java:32)
      	at org.quartz.core.JobRunShell.run(JobRunShell.java:223)
      	at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:549)
      

      After the stacktrace there are no further messages from the mail processor until the next scheduled run of the processor. This second run (and all subsequent runs) throw the same stacktrace.

      • You can see that three messages were found for processing. The first message is the UTF-7 and this causes the handler to fail, the two other messages are never processed.

      Workaround

      The UTF-7 message must be removed in order for the mail processor to process any further mail. If you wish to recover the email content before deletion, follow the KB below:

      Then you can proceed with deleting the affected ID that stuck, refer to the steps below:

      1. Backup the database
      2. Delete following the command below:
        delete from "AO_2C4E5C_MAILITEMCHUNK" where "MAIL_ITEM_ID" = <id from above>;
        delete from "AO_2C4E5C_MAILITEM" where "ID" = <id from above>;
        

      NOTE: For Cloud customer, please inform support team to perform troubleshooting and workaround for this bug.

      Attachments

        Issue Links

          Activity

            People

              knguyen@atlassian.com Kha Nguyen (Inactive)
              tevans Tim Evans (Inactive)
              Votes:
              1 Vote for this issue
              Watchers:
              4 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved:

                Backbone Issue Sync