"InvalidPathException: Illegal char" exception when processing emails which results in not creating cases, adding comments or not adding attachments

XMLWordPrintable

    • Type: Bug
    • Resolution: Fixed
    • Priority: Low
    • None
    • Affects Version/s: 4.1.0, 4.3.3, 4.5.4, 5.7.1
    • Component/s: Email - Incoming
    • 20
    • Severity 2 - Major
    • 5

      Summary

      JIRA Service Desk 4.x on Windows very rarely throws "InvalidPathException: Illegal char" exception when processing emails which results in not creating cases, adding comments or not adding attachments.

      Environment

      • Windows
      • JIRA Service Desk 4.x
      • Potentially MS Outlook & Office 365

      Steps to Reproduce

      • Could not replicate

      Expected Results

      Even if there are illegal characters somewhere in the email, JIRA should still process the email, perhaps strip those characters and still process the message

      Actual Results

      The below exception is thrown in the atlassian-jira.log file:

      2019-08-28 09:23:56,406 Caesium-1-1 ERROR g600015     [c.a.p.i.util.runner.AuthenticationContextUtilImpl] Unexpected error while running action as user 'username'
      java.nio.file.InvalidPathException: Illegal char <
      > at index 67: eRecruit_Tips_for_HR_Users_who_have_transferred_to_DCIS_and_provide
      _service_to_client_agencies-1.eml4238941347346109588.tmp
      	at sun.nio.fs.WindowsPathParser.normalize(WindowsPathParser.java:182)
      	at sun.nio.fs.WindowsPathParser.parse(WindowsPathParser.java:153)
      	at sun.nio.fs.WindowsPathParser.parse(WindowsPathParser.java:77)
      	at sun.nio.fs.WindowsPath.parse(WindowsPath.java:94)
      	at sun.nio.fs.WindowsFileSystem.getPath(WindowsFileSystem.java:255)
      	at java.nio.file.TempFileHelper.generatePath(TempFileHelper.java:60)
      	at java.nio.file.TempFileHelper.create(TempFileHelper.java:127)
      	at java.nio.file.TempFileHelper.createTempFile(TempFileHelper.java:161)
      	at java.nio.file.Files.createTempFile(Files.java:897)
      	at com.atlassian.servicedesk.internal.comment.InternalServiceDeskCommentServiceImpl.createTempAttachment(InternalServiceDeskCommentServiceImpl.java:578)
      	at com.atlassian.servicedesk.internal.comment.InternalServiceDeskCommentServiceImpl.lambda$validateMailAttachment$25(InternalServiceDeskCommentServiceImpl.java:568)
      	at com.atlassian.pocketknife.step.EitherStep2.lambda$null$0(EitherStep2.java:20)
      	at io.atlassian.fugue.Either$RightProjection.flatMap(Either.java:937)
      	at io.atlassian.fugue.Either.flatMap(Either.java:231)
      	at com.atlassian.pocketknife.step.EitherStep2.lambda$then$1(EitherStep2.java:20)
      	at io.atlassian.fugue.Either$RightProjection.flatMap(Either.java:937)
      	at io.atlassian.fugue.Either.flatMap(Either.java:231)
      	at com.atlassian.pocketknife.step.EitherStep2.then(EitherStep2.java:20)
      	at com.atlassian.servicedesk.internal.comment.InternalServiceDeskCommentServiceImpl.validateMailAttachment(InternalServiceDeskCommentServiceImpl.java:568)
      	at com.atlassian.servicedesk.internal.comment.InternalServiceDeskCommentServiceImpl.validateMailAttachment(InternalServiceDeskCommentServiceImpl.java:546)
      	at com.atlassian.servicedesk.internal.comment.InternalServiceDeskCommentServiceImpl.validateMailAttachmentsToAdd(InternalServiceDeskCommentServiceImpl.java:524)
      	at com.atlassian.servicedesk.internal.comment.InternalServiceDeskCommentServiceImpl.addEmailAttachmentsToIssue(InternalServiceDeskCommentServiceImpl.java:508)
      	at com.atlassian.servicedesk.internal.comment.InternalServiceDeskCommentServiceImpl.addAttachmentsAndBuildComment(InternalServiceDeskCommentServiceImpl.java:395)
      	at com.atlassian.servicedesk.internal.comment.InternalServiceDeskCommentServiceImpl.addCommentAndMailAttachments(InternalServiceDeskCommentServiceImpl.java:423)
      	at com.atlassian.servicedesk.internal.comment.InternalServiceDeskCommentServiceImpl.addCommentAndAttachmentsFromEmailToExistingIssue(InternalServiceDeskCommentServiceImpl.java:213)
      	at com.atlassian.servicedesk.internal.feature.emailchannel.IncomingEmailManagerImpl.lambda$addServiceDeskCommentFromEmail$0(IncomingEmailManagerImpl.java:221)
      	at com.atlassian.pocketknife.step.EitherStep2.lambda$null$0(EitherStep2.java:20)
      	at io.atlassian.fugue.Either$RightProjection.flatMap(Either.java:937)
      	at io.atlassian.fugue.Either.flatMap(Either.java:231)
      	at com.atlassian.pocketknife.step.EitherStep2.lambda$then$1(EitherStep2.java:20)
      	at io.atlassian.fugue.Either$RightProjection.flatMap(Either.java:937)
      	at io.atlassian.fugue.Either.flatMap(Either.java:231)
      	at com.atlassian.pocketknife.step.EitherStep2.then(EitherStep2.java:20)
      	at com.atlassian.servicedesk.internal.feature.emailchannel.IncomingEmailManagerImpl.addServiceDeskCommentFromEmail(IncomingEmailManagerImpl.java:220)
      	at com.atlassian.servicedesk.internal.feature.emailchannel.IncomingEmailServiceImpl.addServiceDeskCommentToIssue(IncomingEmailServiceImpl.java:332)
      	at com.atlassian.servicedesk.internal.feature.emailchannel.IncomingEmailServiceImpl.lambda$addCommentToIssue$27(IncomingEmailServiceImpl.java:313)
      	at io.atlassian.fugue.Option$Some.fold(Option.java:444)
      	at com.atlassian.servicedesk.internal.feature.emailchannel.IncomingEmailServiceImpl.addCommentToIssue(IncomingEmailServiceImpl.java:310)
      	at com.atlassian.servicedesk.internal.feature.emailchannel.IncomingEmailServiceImpl.lambda$null$18(IncomingEmailServiceImpl.java:208)
      	at io.atlassian.fugue.Option$Some.fold(Option.java:444)
      	at com.atlassian.servicedesk.internal.feature.emailchannel.IncomingEmailServiceImpl.lambda$createNewOrCommentOnIssueWithMailChannelAsEmailSender$19(IncomingEmailServiceImpl.java:198)
      	at io.atlassian.fugue.Option$None.fold(Option.java:393)
      	at com.atlassian.servicedesk.internal.feature.emailchannel.IncomingEmailServiceImpl.createNewOrCommentOnIssueWithMailChannelAsEmailSender(IncomingEmailServiceImpl.java:223)
      	at com.atlassian.servicedesk.internal.feature.emailchannel.IncomingEmailServiceImpl.lambda$null$14(IncomingEmailServiceImpl.java:185)
      	at com.atlassian.servicedesk.internal.api.util.context.ReentrantThreadLocalBasedCodeContext.rteInvoke(ReentrantThreadLocalBasedCodeContext.java:136)
      	at com.atlassian.servicedesk.internal.api.util.context.ReentrantThreadLocalBasedCodeContext.runInContext(ReentrantThreadLocalBasedCodeContext.java:54)
      	at com.atlassian.servicedesk.internal.utils.context.CustomerContextServiceImpl.runInCustomerContext(CustomerContextServiceImpl.java:37)
      	at com.atlassian.servicedesk.internal.feature.emailchannel.IncomingEmailServiceImpl.inCustomerContext(IncomingEmailServiceImpl.java:509)
      	at com.atlassian.servicedesk.internal.feature.emailchannel.IncomingEmailServiceImpl.lambda$inEmailContext$44(IncomingEmailServiceImpl.java:502)
      	at com.atlassian.pocketknife.internal.util.runner.AuthenticationContextUtilImpl.runAs(AuthenticationContextUtilImpl.java:53)
      	at com.atlassian.servicedesk.internal.feature.emailchannel.IncomingEmailServiceImpl.inEmailContext(IncomingEmailServiceImpl.java:504)
      	at com.atlassian.servicedesk.internal.feature.emailchannel.IncomingEmailServiceImpl.lambda$doCreateNewOrCommentOnIssueWithMailChannel$15(IncomingEmailServiceImpl.java:185)
      	at io.atlassian.fugue.Either$Right.fold(Either.java:641)
      	at com.atlassian.servicedesk.internal.feature.emailchannel.IncomingEmailServiceImpl.doCreateNewOrCommentOnIssueWithMailChannel(IncomingEmailServiceImpl.java:183)
      	at com.atlassian.servicedesk.internal.feature.emailchannel.IncomingEmailServiceImpl.lambda$createNewOrCommentOnIssueWithMailChannel$6(IncomingEmailServiceImpl.java:153)
      	at com.atlassian.pocketknife.step.EitherStep2.lambda$null$0(EitherStep2.java:20)
      	at io.atlassian.fugue.Either$RightProjection.flatMap(Either.java:937)
      	at io.atlassian.fugue.Either.flatMap(Either.java:231)
      	at com.atlassian.pocketknife.step.EitherStep2.lambda$then$1(EitherStep2.java:20)
      	at io.atlassian.fugue.Either$RightProjection.flatMap(Either.java:937)
      	at io.atlassian.fugue.Either.flatMap(Either.java:231)
      	at com.atlassian.pocketknife.step.EitherStep2.then(EitherStep2.java:20)
      	at com.atlassian.servicedesk.internal.feature.emailchannel.IncomingEmailServiceImpl.createNewOrCommentOnIssueWithMailChannel(IncomingEmailServiceImpl.java:153)
      	at com.atlassian.servicedesk.internal.feature.emailchannel.IncomingEmailServiceImpl.lambda$processEmailWithMailChannel$1(IncomingEmailServiceImpl.java:141)
      	at io.atlassian.fugue.Either$RightProjection.flatMap(Either.java:937)
      	at io.atlassian.fugue.Either.flatMap(Either.java:231)
      	at com.atlassian.pocketknife.step.EitherStep1.then(EitherStep1.java:18)
      	at com.atlassian.servicedesk.internal.feature.emailchannel.IncomingEmailServiceImpl.processEmailWithMailChannel(IncomingEmailServiceImpl.java:141)
      	at com.atlassian.servicedesk.internal.feature.emailchannel.emailplatform.handler.SDMailHandler.processMessage(SDMailHandler.java:75)
      	at com.atlassian.servicedesk.internal.feature.emailchannel.emailplatform.handler.SDMailHandler.handleReplyMessage(SDMailHandler.java:57)
      	at com.atlassian.jira.internal.mail.processor.feature.processor.MailHandlerWorker.handle(MailHandlerWorker.java:58)
      	at com.atlassian.jira.internal.mail.processor.feature.processor.MailProcessorWorker.processMailItem(MailProcessorWorker.java:108)
      	at com.atlassian.jira.internal.mail.processor.feature.processor.MailProcessorWorker.lambda$process$0(MailProcessorWorker.java:85)
      	at com.atlassian.pocketknife.internal.querydsl.DatabaseAccessorImpl.lambda$execute$0(DatabaseAccessorImpl.java:69)
      	at com.atlassian.sal.core.rdbms.DefaultTransactionalExecutor.executeInternal(DefaultTransactionalExecutor.java:87)
      	at com.atlassian.sal.core.rdbms.DefaultTransactionalExecutor.lambda$execute$0(DefaultTransactionalExecutor.java:43)
      	at com.atlassian.sal.jira.rdbms.JiraHostConnectionAccessor.lambda$borrowConnectionAndExecute$0(JiraHostConnectionAccessor.java:95)
      	at com.atlassian.jira.database.DatabaseAccessorImpl.executeQuery(DatabaseAccessorImpl.java:74)
      	... 2 filtered
      	at java.lang.reflect.Method.invoke(Method.java:498)
      	at com.atlassian.plugin.util.ContextClassLoaderSettingInvocationHandler.invoke(ContextClassLoaderSettingInvocationHandler.java:26)
      	at com.sun.proxy.$Proxy505.executeQuery(Unknown Source)
      	... 2 filtered
      	at java.lang.reflect.Method.invoke(Method.java:498)
      	at com.atlassian.plugin.osgi.bridge.external.HostComponentFactoryBean$DynamicServiceInvocationHandler.invoke(HostComponentFactoryBean.java:131)
      	at com.sun.proxy.$Proxy505.executeQuery(Unknown Source)
      	at com.atlassian.sal.jira.rdbms.JiraHostConnectionAccessor.borrowConnectionAndExecute(JiraHostConnectionAccessor.java:84)
      	at com.atlassian.sal.jira.rdbms.JiraHostConnectionAccessor.execute(JiraHostConnectionAccessor.java:48)
      	at com.atlassian.sal.core.rdbms.DefaultTransactionalExecutor.execute(DefaultTransactionalExecutor.java:40)
      	at com.atlassian.pocketknife.internal.querydsl.DatabaseAccessorImpl.execute(DatabaseAccessorImpl.java:67)
      	at com.atlassian.pocketknife.internal.querydsl.DatabaseAccessorImpl.runInNewTransaction(DatabaseAccessorImpl.java:38)
      	at com.atlassian.jira.internal.mail.processor.feature.processor.MailProcessorWorker.process(MailProcessorWorker.java:82)
      	at com.atlassian.jira.internal.mail.processor.feature.processor.MailProcessorWorker.processAllValidMailChannels(MailProcessorWorker.java:124)
      	at com.atlassian.jira.internal.mail.processor.feature.processor.MailProcessorService.run(MailProcessorService.java:25)
      	at com.atlassian.jira.internal.mail.processor.services.MailProcessorExecutor.run(MailProcessorExecutor.java:29)
      	at com.atlassian.jira.internal.mail.processor.services.AbstractMailExecutor.execute(AbstractMailExecutor.java:45)
      	at com.atlassian.jira.internal.mail.processor.services.MailJobRunner.runJob(MailJobRunner.java:35)
      	at com.atlassian.scheduler.core.JobLauncher.runJob(JobLauncher.java:134)
      	at com.atlassian.scheduler.core.JobLauncher.launchAndBuildResponse(JobLauncher.java:106)
      	at com.atlassian.scheduler.core.JobLauncher.launch(JobLauncher.java:90)
      	at com.atlassian.scheduler.caesium.impl.CaesiumSchedulerService.launchJob(CaesiumSchedulerService.java:435)
      	at com.atlassian.scheduler.caesium.impl.CaesiumSchedulerService.executeClusteredJob(CaesiumSchedulerService.java:430)
      	at com.atlassian.scheduler.caesium.impl.CaesiumSchedulerService.executeClusteredJobWithRecoveryGuard(CaesiumSchedulerService.java:454)
      	at com.atlassian.scheduler.caesium.impl.CaesiumSchedulerService.executeQueuedJob(CaesiumSchedulerService.java:382)
      	at com.atlassian.scheduler.caesium.impl.SchedulerQueueWorker.executeJob(SchedulerQueueWorker.java:66)
      	at com.atlassian.scheduler.caesium.impl.SchedulerQueueWorker.executeNextJob(SchedulerQueueWorker.java:60)
      	at com.atlassian.scheduler.caesium.impl.SchedulerQueueWorker.run(SchedulerQueueWorker.java:35)
      	at java.lang.Thread.run(Thread.java:748)
      

      Workaround

      We have observed that in some cases that setting the encoding as described in the solution from Platform encoding or JNU encoding in Jira is set to ANSI_X3.4-1968 even though the server is set to UTF-8 helps preventing the issue.

            Assignee:
            Unassigned
            Reporter:
            Sergey (Inactive)
            Votes:
            20 Vote for this issue
            Watchers:
            25 Start watching this issue

              Created:
              Updated:
              Resolved: