Uploaded image for project: 'Jira Cloud'
  1. Jira Cloud
  2. JRACLOUD-37830

A broken custom Priority or Issue Type Icon URL of just / breaks outgoing mail notifications

    XMLWordPrintable

Details

    Description

      NOTE: This bug report is for JIRA Cloud. Using JIRA Server? See the corresponding bug report.

      Summary

      Administrators can set custom Priorities, along with custom icons. However if the URL to the custom icon is set to / outgoing mail will break as JIRA tries to turn it into an inline attachment.

      Steps to Reproduce

      1. Go to 'priorities' page and add a new priority using a broken icon URL (one that when accessed, won't give you a vaild file, for example '/') or in Issue Types page and create a broken an Issue Type with a broken avatar URL
      2. In a project, make sure to be notified of an operation that adds that icon or avatar (for example, create issue adds the 'priority' icon). If you're both doing and the operation and receiving the notification, make sure to be notified of your own actions
      3. Trigger the notification

      Expected Results

      1. Notification is triggered

      Actual Results

      Notifications are not triggered.
      Invalid priority icons are showing this error in logs:

      java.lang.NullPointerException
      	at com.atlassian.jira.mail.util.MailAttachments$ImageAttachment.buildBodyPart(MailAttachments.java:227)
      	at com.atlassian.jira.mail.util.MailAttachmentsManagerImpl.buildMimeBodyPartFromMailAttachment(MailAttachmentsManagerImpl.java:233)
      	at com.atlassian.jira.mail.util.MailAttachmentsManagerImpl.lambda$buildAttachmentsBodyParts$0(MailAttachmentsManagerImpl.java:227)
      	at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
      	at java.util.HashMap$EntrySpliterator.forEachRemaining(HashMap.java:1691)
      	at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481)
      	at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471)
      	at java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:708)
      	at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
      	at java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:499)
      	at com.atlassian.jira.mail.util.MailAttachmentsManagerImpl.buildAttachmentsBodyParts(MailAttachmentsManagerImpl.java:229)
      	at com.atlassian.jira.mail.builder.EmailRenderer.buildMailWithAttachments(EmailRenderer.java:137)
      	at com.atlassian.jira.mail.builder.EmailRenderer.renderEmailBody(EmailRenderer.java:113)
      	at com.atlassian.jira.mail.builder.EmailRenderer.render(EmailRenderer.java:152)
      	at com.atlassian.jira.mail.builder.EmailBuilder.renderNow(EmailBuilder.java:155)
      	at com.atlassian.jira.mail.builder.EmailBuilder.renderNowAsQueueItem(EmailBuilder.java:145)
      	at com.atlassian.jira.mail.DefaultMailQueueItemFactoryImpl.getMailQueueItem(DefaultMailQueueItemFactoryImpl.java:48)
      	at com.atlassian.jira.mail.MailingListCompiler$1.processRecipient(MailingListCompiler.java:298)
      	at com.atlassian.jira.mail.NotificationRecipientProcessor.process(NotificationRecipientProcessor.java:34)
      	at com.atlassian.jira.mail.MailingListCompiler.addMailsToQueue(MailingListCompiler.java:322)
      	at com.atlassian.jira.mail.MailingListCompiler.access$600(MailingListCompiler.java:50)
      	at com.atlassian.jira.mail.MailingListCompiler$NotificationCompiler.addEmailsToQueue(MailingListCompiler.java:443)
      	at com.atlassian.jira.mail.MailingListCompiler$NotificationCompiler.sendLists(MailingListCompiler.java:415)
      	at com.atlassian.jira.mail.MailingListCompiler$NotificationCompiler.sendNoLevelsIgnoreGroup(MailingListCompiler.java:396)
      	at com.atlassian.jira.mail.MailingListCompiler$NotificationCompiler.sendToAll(MailingListCompiler.java:392)
      	at com.atlassian.jira.mail.MailingListCompiler.sendLists(MailingListCompiler.java:147)
      	at com.atlassian.jira.mail.IssueMailQueueItem.send(IssueMailQueueItem.java:118)
      	at com.atlassian.jira.mail.taskrunners.issuenotification.IssueNotificationTaskRunner.runTask(IssueNotificationTaskRunner.java:175)
      	at com.atlassian.jira.task.progress.ProgressAwareMessageRunner.processMessage(ProgressAwareMessageRunner.java:87)
      	at com.atlassian.messagequeue.internal.core.NestedMessageConsumer.consume(NestedMessageConsumer.java:135)
      	at com.atlassian.messagequeue.internal.sqs.SQSMessageConsumer.processReceiveMessageResult(SQSMessageConsumer.java:151)
      	at com.atlassian.messagequeue.internal.sqs.SQSMessageConsumer.run(SQSMessageConsumer.java:95)
      	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
      	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
      	at java.lang.Thread.run(Thread.java:748) {noformat}
      

      Invalid Issue Type avatars, a throwing this:

      msg:	 Can't find read strategy to read: 10517, size: medium	
          	 stack:	 java.lang.RuntimeException: Can't find read strategy to read: 10517, size: medium
      	at com.atlassian.jira.avatar.AvatarManagerImpl.lambda$getAvatarInputStream$5(AvatarManagerImpl.java:362)
      	at java.util.Optional.orElseThrow(Optional.java:290)
      	at com.atlassian.jira.avatar.AvatarManagerImpl.getAvatarInputStream(AvatarManagerImpl.java:362)
      	at com.atlassian.jira.avatar.AvatarManagerImpl.lambda$processAvatarData$3(AvatarManagerImpl.java:336)
      	at com.atlassian.jira.avatar.PngAvatarFormatPolicy.getData(PngAvatarFormatPolicy.java:34)
      	at com.atlassian.jira.avatar.AvatarManagerImpl.processAvatarData(AvatarManagerImpl.java:334)
      	at com.atlassian.jira.avatar.AvatarManagerImpl.readAvatarData(AvatarManagerImpl.java:394)
      	at com.atlassian.jira.mail.util.MailAttachments$DefaultAvatarAttachment.prepareBodyPart(MailAttachments.java:399)
      	at com.atlassian.jira.mail.util.MailAttachments$AbstractAvatarAttachment.buildBodyPart(MailAttachments.java:328)
      	at com.atlassian.jira.mail.util.MailAttachmentsManagerImpl.buildMimeBodyPartFromMailAttachment(MailAttachmentsManagerImpl.java:233)
      	at com.atlassian.jira.mail.util.MailAttachmentsManagerImpl.lambda$buildAttachmentsBodyParts$0(MailAttachmentsManagerImpl.java:227)
      	at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
      	at java.util.HashMap$EntrySpliterator.forEachRemaining(HashMap.java:1691)
      	at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481)
      	at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471)
      	at java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:708)
      	at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
      	at java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:499)
      	at com.atlassian.jira.mail.util.MailAttachmentsManagerImpl.buildAttachmentsBodyParts(MailAttachmentsManagerImpl.java:229)
      	at com.atlassian.jira.mail.builder.EmailRenderer.buildMailWithAttachments(EmailRenderer.java:137)
      	at com.atlassian.jira.mail.builder.EmailRenderer.renderEmailBody(EmailRenderer.java:113)
      	at com.atlassian.jira.mail.builder.EmailRenderer.render(EmailRenderer.java:152)
      	at com.atlassian.jira.mail.builder.EmailBuilder.renderNow(EmailBuilder.java:155)
      	at com.atlassian.jira.mail.builder.EmailBuilder.renderNowAsQueueItem(EmailBuilder.java:145)
      	at com.atlassian.jira.mail.DefaultMailQueueItemFactoryImpl.getMailQueueItem(DefaultMailQueueItemFactoryImpl.java:48)
      	at com.atlassian.jira.mail.MailingListCompiler$1.processRecipient(MailingListCompiler.java:298)
      	at com.atlassian.jira.mail.NotificationRecipientProcessor.process(NotificationRecipientProcessor.java:34)
      	at com.atlassian.jira.mail.MailingListCompiler.addMailsToQueue(MailingListCompiler.java:322)
      	at com.atlassian.jira.mail.MailingListCompiler.access$600(MailingListCompiler.java:50)
      	at com.atlassian.jira.mail.MailingListCompiler$NotificationCompiler.addEmailsToQueue(MailingListCompiler.java:443)
      	at com.atlassian.jira.mail.MailingListCompiler$NotificationCompiler.sendLists(MailingListCompiler.java:415)
      	at com.atlassian.jira.mail.MailingListCompiler$NotificationCompiler.sendNoLevelsIgnoreGroup(MailingListCompiler.java:396)
      	at com.atlassian.jira.mail.MailingListCompiler$NotificationCompiler.sendToAll(MailingListCompiler.java:392)
      	at com.atlassian.jira.mail.MailingListCompiler.sendLists(MailingListCompiler.java:147)
      	at com.atlassian.jira.mail.IssueMailQueueItem.send(IssueMailQueueItem.java:118)
      	at com.atlassian.jira.mail.taskrunners.issuenotification.IssueNotificationTaskRunner.runTask(IssueNotificationTaskRunner.java:175)
      	at com.atlassian.jira.task.progress.ProgressAwareMessageRunner.processMessage(ProgressAwareMessageRunner.java:87)
      	at com.atlassian.messagequeue.internal.core.NestedMessageConsumer.consume(NestedMessageConsumer.java:135)
      	at com.atlassian.messagequeue.internal.sqs.SQSMessageConsumer.processReceiveMessageResult(SQSMessageConsumer.java:151)
      	at com.atlassian.messagequeue.internal.sqs.SQSMessageConsumer.run(SQSMessageConsumer.java:95)
      	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
      	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
      	at java.lang.Thread.run(Thread.java:748)
      

      Workaround

      Select a default icon for the custom priority or avatar for the Issue Type, or enter a valid icon/avatar URL.

      Attachments

        Issue Links

          Activity

            People

              Unassigned Unassigned
              imaduro Ivan Maduro (Inactive)
              Votes:
              2 Vote for this issue
              Watchers:
              13 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: