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

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

    XMLWordPrintable

Details

    • Bug
    • Resolution: Unresolved
    • Low
    • None
    • 4.5.4, 4.1.0, 4.3.3, 5.7.1
    • Email - Incoming

    Description

      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.

      Attachments

        Issue Links

          Activity

            People

              Unassigned Unassigned
              soslopov Sergey
              Votes:
              19 Vote for this issue
              Watchers:
              21 Start watching this issue

              Dates

                Created:
                Updated:

                Backbone Issue Sync