Jira notification is not sent depending on Issue status
Platform notice: Server and Data Center only. This article only applies to Atlassian products on the Server and Data Center platforms.
Support for Server* products ended on February 15th 2024. If you are running a Server product, you can visit the Atlassian Server end of support announcement to review your migration options.
*Except Fisheye and Crucible
Summary
Notification is not sent depending on Issue status
Environment
7.13.9
Diagnosis
This is the error message seen in the logs when Jira tried to send the notification:
2020-07-08 15:21:00,313 Sending mailitem com.atlassian.jira.mail.IssueMailQueueItem@3302b99e[issue=com.atlassian.jira.issue.IssueImpl@2d6a0364[id=10000,summary=IssueSummary,key=TST-1,created=2020-10-08 22:54:07.0,updated=2020-10-09 12:27:56.0,assignee=Marcus(marcus),reporter=Marcus(marcus)],remoteUser=marcus(marcus),notificationType=Current_Reporter,eventTypeId=6,templateId=6] ERROR anonymous Mail Queue Service [c.a.jira.mail.MailingListCompiler] Failed adding mail for notification recipient: [email=marcus@email.com, user=Marcus(marcus)]
java.lang.NullPointerException
at com.atlassian.jira.mail.util.MailAttachments$ImageAttachment.buildBodyPart(MailAttachments.java:228)
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:1699)
at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:482)
at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:472)
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:566)
at com.atlassian.jira.mail.util.MailAttachmentsManagerImpl.buildAttachmentsBodyParts(MailAttachmentsManagerImpl.java:229)
at com.atlassian.jira.mail.builder.EmailRenderer.buildMailWithAttachments(EmailRenderer.java:135)
at com.atlassian.jira.mail.builder.EmailRenderer.renderEmailBody(EmailRenderer.java:111)
at com.atlassian.jira.mail.builder.EmailRenderer.render(EmailRenderer.java:150)
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.MailingListCompiler$1.evaluateEmailForRecipient(MailingListCompiler.java:336)
at com.atlassian.jira.mail.NotificationRecipientProcessor.evaluateEmails(NotificationRecipientProcessor.java:39)
at com.atlassian.jira.mail.MailingListCompiler.evaluateEmails(MailingListCompiler.java:267)
at com.atlassian.jira.mail.MailingListCompiler.access$300(MailingListCompiler.java:49)
at com.atlassian.jira.mail.MailingListCompiler$NotificationCompiler.lambda$addEmailsToQueue$0(MailingListCompiler.java:466)
at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
at java.util.HashMap$EntrySpliterator.forEachRemaining(HashMap.java:1699)
at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:482)
at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:472)
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:566)
at com.atlassian.jira.mail.MailingListCompiler$NotificationCompiler.addEmailsToQueue(MailingListCompiler.java:468)
at com.atlassian.jira.mail.MailingListCompiler$NotificationCompiler.sendLists(MailingListCompiler.java:438)
at com.atlassian.jira.mail.MailingListCompiler$NotificationCompiler.evaluateForEvent(MailingListCompiler.java:395)
at com.atlassian.jira.mail.MailingListCompiler.prepareEmail(MailingListCompiler.java:167)
at com.atlassian.jira.mail.MailingListCompiler.sendLists(MailingListCompiler.java:101)
at com.atlassian.jira.mail.IssueMailQueueItem.send(IssueMailQueueItem.java:128)
at com.atlassian.mail.queue.MailQueueImpl.sendBufferUnderLock(MailQueueImpl.java:103)
at com.atlassian.mail.queue.MailQueueImpl.sendBuffer(MailQueueImpl.java:56)
at com.atlassian.jira.mail.JiraMailQueue$1.apply(JiraMailQueue.java:51)
at com.atlassian.jira.mail.JiraMailQueue$1.apply(JiraMailQueue.java:48)
at com.atlassian.jira.util.velocity.DefaultVelocityRequestContextFactory.runWithStaticBaseUrl(DefaultVelocityRequestContextFactory.java:110)
at com.atlassian.jira.util.DefaultBaseUrl.runWithStaticBaseUrl(DefaultBaseUrl.java:50)
at com.atlassian.jira.mail.JiraMailQueue.sendBuffer(JiraMailQueue.java:48)
at com.atlassian.jira.service.services.mail.MailQueueService.run(MailQueueService.java:21)
at com.atlassian.jira.service.JiraServiceContainerImpl.run(JiraServiceContainerImpl.java:68)
at com.atlassian.jira.service.ServiceRunner.runService(ServiceRunner.java:62)
at com.atlassian.jira.service.ServiceRunner.runServiceId(ServiceRunner.java:44)
at com.atlassian.jira.service.ServiceRunner.runJob(ServiceRunner.java:32)
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:443)
at com.atlassian.scheduler.caesium.impl.CaesiumSchedulerService.executeLocalJob(CaesiumSchedulerService.java:410)
at com.atlassian.scheduler.caesium.impl.CaesiumSchedulerService.executeQueuedJob(CaesiumSchedulerService.java:388)
at com.atlassian.scheduler.caesium.impl.CaesiumSchedulerService$1.consume(CaesiumSchedulerService.java:285)
at com.atlassian.scheduler.caesium.impl.CaesiumSchedulerService$1.consume(CaesiumSchedulerService.java:282)
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:748)
Cause
Status does not have an icon defined.
The following query should return all status that may be facing the same problem
select * from issuestatus where iconurl = '/';
Solution
Run the following Update to the database to set the generic png that is usually associated to status created in Jira as the icon for the status.
update issuestatus
set iconurl = '/images/icons/statuses/generic.png'
where iconurl = '/';