Uploaded image for project: 'Jira Service Management Cloud'
  1. Jira Service Management Cloud
  2. JSDCLOUD-5086

HtmlToWikiTextConverter throws an exception when parsing some characters in an email

    XMLWordPrintable

Details

    Description

      Summary

      When an e-mail is sent in to the JSD mail handler that contains a character not parsable by the HtmlToWikiTextConverter, an exception is thrown and error is visible in the mail processing logs.

      Environment

      • JIRA Service Desk v3.2.0-OD-03

      How to Diagnose

      If an email is sent in and an issue is not created, check the processing logs for the mail account at the following URL:
      https://<instance>.atlassian.net/secure/admin/SDMailInfo.jspa

      • Click View log to the right of the e-mail address used for your Service Desk, then click the Processing Log tab. The error String index out of range: 0 will be in the Details column.

      Expected Results

      E-mail is parsed successfully and a JSD issue is created with the e-mail contents.

      Actual Results

      The below exception is thrown in the JIRA log file:

      2016-02-19 17:16:16,669 Caesium-1-2 ERROR anonymous     [c.a.m.incoming.jepp.processor] Exception when MailHandlerWorker handles message:
      java.lang.StringIndexOutOfBoundsException: String index out of range: 0
      	at java.lang.String.charAt(String.java:646)
      	at com.atlassian.mail.converters.wiki.HtmlToWikiTextConverter$FormattingVisitor.head(HtmlToWikiTextConverter.java:133)
      	at org.jsoup.select.NodeTraversor.traverse(NodeTraversor.java:31)
      	at com.atlassian.mail.converters.wiki.HtmlToWikiTextConverter.convert(HtmlToWikiTextConverter.java:88)
      	at com.atlassian.mail.HtmlToWikiTextConverter.convert(HtmlToWikiTextConverter.java:27)
      	at com.atlassian.mail.MailUtils$1.convert(MailUtils.java:206)
      	at com.atlassian.mail.MailUtils.extractTextFromPart(MailUtils.java:537)
      	at com.atlassian.mail.MailUtils.getBodyFromMultipart(MailUtils.java:487)
      	at com.atlassian.mail.MailUtils.getBodyFromMultipart(MailUtils.java:465)
      	at com.atlassian.mail.MailUtils.getBody(MailUtils.java:225)
      	at com.atlassian.mail.MailUtils.getBody(MailUtils.java:210)
      	at com.atlassian.servicedesk.internal.feature.emailchannel.IncomingEmailParser.parse(IncomingEmailParser.java:41)
      	at com.atlassian.servicedesk.internal.feature.emailchannel.IncomingEmailManager.createIssueInJiraContext(IncomingEmailManager.scala:191)
      	at com.atlassian.servicedesk.internal.feature.emailchannel.IncomingEmailManager.createIssueFromEmail(IncomingEmailManager.scala:171)
      	at com.atlassian.servicedesk.internal.feature.emailchannel.IncomingEmailService$$anonfun$createNewIssueWithMailChannel$2.apply(IncomingEmailService.scala:146)
      	at com.atlassian.servicedesk.internal.feature.emailchannel.IncomingEmailService$$anonfun$createNewIssueWithMailChannel$2.apply(IncomingEmailService.scala:145)
      	at scalaz.$bslash$div.flatMap(Either.scala:134)
      	at com.atlassian.servicedesk.internal.feature.emailchannel.IncomingEmailService.createNewIssueWithMailChannel(IncomingEmailService.scala:145)
      	at com.atlassian.servicedesk.internal.feature.emailchannel.IncomingEmailService$$anonfun$com$$$$bd7392fa9edbf4ccadfa49f2f55a2a$$$$OrCommentOnIssueWithMailChannel$1.apply(IncomingEmailService.scala:102)
      	at com.atlassian.servicedesk.internal.feature.emailchannel.IncomingEmailService$$anonfun$com$$$$bd7392fa9edbf4ccadfa49f2f55a2a$$$$OrCommentOnIssueWithMailChannel$1.apply(IncomingEmailService.scala:99)
      	at com.atlassian.servicedesk.internal.feature.emailchannel.IncomingEmailService$$anonfun$com$$$$f0a28e2c59a8a5c0c52a37404eee56bd$$$$nEmailContext$1$$anonfun$apply$16.apply(IncomingEmailService.scala:166)
      	at com.atlassian.servicedesk.internal.utils.context.CustomerContextUtil$.inCustomerContext(CustomerContextUtil.scala:24)
      	at com.atlassian.servicedesk.internal.feature.emailchannel.IncomingEmailService$$anonfun$com$atlassian$servicedesk$internal$feature$emailchannel$IncomingEmailService$$inEmailContext$1.apply(IncomingEmailService.scala:165)
      	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:163)
      	at com.atlassian.servicedesk.internal.feature.emailchannel.IncomingEmailService.com$atlassian$servicedesk$internal$feature$emailchannel$IncomingEmailService$$createNewOrCommentOnIssueWithMailChannel(IncomingEmailService.scala:99)
      	at com.atlassian.servicedesk.internal.feature.emailchannel.IncomingEmailService$$anonfun$1$$anonfun$apply$2$$anonfun$apply$3.apply(IncomingEmailService.scala:79)
      	at com.atlassian.servicedesk.internal.feature.emailchannel.IncomingEmailService$$anonfun$1$$anonfun$apply$2$$anonfun$apply$3.apply(IncomingEmailService.scala:78)
      	at scalaz.$bslash$div.flatMap(Either.scala:134)
      	at com.atlassian.servicedesk.internal.feature.emailchannel.IncomingEmailService$$anonfun$1$$anonfun$apply$2.apply(IncomingEmailService.scala:78)
      	at com.atlassian.servicedesk.internal.feature.emailchannel.IncomingEmailService$$anonfun$1$$anonfun$apply$2.apply(IncomingEmailService.scala:77)
      	at scalaz.$bslash$div.flatMap(Either.scala:134)
      	at com.atlassian.servicedesk.internal.feature.emailchannel.IncomingEmailService$$anonfun$1.apply(IncomingEmailService.scala:77)
      	at com.atlassian.servicedesk.internal.feature.emailchannel.IncomingEmailService$$anonfun$1.apply(IncomingEmailService.scala:76)
      	at scalaz.$bslash$div.flatMap(Either.scala:134)
      	at com.atlassian.servicedesk.internal.feature.emailchannel.IncomingEmailService.processEmailWithMailChannel(IncomingEmailService.scala:76)
      	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:64)
      	at com.atlassian.jira.internal.mail.processor.feature.processor.MailProcessorWorker.processMailItem(MailProcessorWorker.java:129)
      	at com.atlassian.jira.internal.mail.processor.feature.processor.MailProcessorWorker.process(MailProcessorWorker.java:76)
      	at com.atlassian.jira.internal.mail.processor.feature.processor.MailProcessorService.run(MailProcessorService.java:36)
      	at com.atlassian.jira.internal.mail.processor.services.MailProcessorExecutor.run(MailProcessorExecutor.java:30)
      	at com.atlassian.jira.internal.mail.processor.services.AbstractMailExecutor.execute(AbstractMailExecutor.java:42)
      	at com.atlassian.jira.internal.mail.processor.services.MailJobRunner.runJob(MailJobRunner.java:35)
      	at com.atlassian.scheduler.core.JobLauncher.runJob(JobLauncher.java:153)
      	at com.atlassian.scheduler.core.JobLauncher.launchAndBuildResponse(JobLauncher.java:118)
      	at com.atlassian.scheduler.core.JobLauncher.launch(JobLauncher.java:97)
      	at com.atlassian.scheduler.caesium.impl.CaesiumSchedulerService.launchJob(CaesiumSchedulerService.java:401)
      	at com.atlassian.scheduler.caesium.impl.CaesiumSchedulerService.executeClusteredJob(CaesiumSchedulerService.java:396)
      	at com.atlassian.scheduler.caesium.impl.CaesiumSchedulerService.executeQueuedJob(CaesiumSchedulerService.java:349)
      	at com.atlassian.scheduler.caesium.impl.CaesiumSchedulerService$1.consume(CaesiumSchedulerService.java:255)
      	at com.atlassian.scheduler.caesium.impl.CaesiumSchedulerService$1.consume(CaesiumSchedulerService.java:252)
      	at com.atlassian.scheduler.caesium.impl.SchedulerQueueWorker.executeJob(SchedulerQueueWorker.java:65)
      	at com.atlassian.scheduler.caesium.impl.SchedulerQueueWorker.executeNextJob(SchedulerQueueWorker.java:59)
      	at com.atlassian.scheduler.caesium.impl.SchedulerQueueWorker.run(SchedulerQueueWorker.java:34)
      	at java.lang.Thread.run(Thread.java:745)
      

      Workaround

      Contact Atlassian Cloud Support(https://support.atlassian.com/) to disable the HtmlToWikiTextConverter.

      Attachments

        Issue Links

          Activity

            People

              Unassigned Unassigned
              mgarcia@atlassian.com Marco Garcia (Inactive)
              Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: