Details
-
Bug
-
Resolution: Fixed
-
Low
-
4.4.5
-
None
-
4.04
-
Description
The following error is presented in the logs:
2013-03-03 16:31:57,258 TP-Processor6 ERROR aronc 991x50650x1 nlj2wu 67.180.130.146 /secure/AddComment.jspa [jira.event.issue.IssueEventListenerHandler] Exception thrown from listener [com.atlassian.jira.event.listeners.mail.MailListener] : null java.lang.NullPointerException at com.google.common.base.Preconditions.checkNotNull(Preconditions.java:180) at com.atlassian.jira.notification.NotificationRecipient.<init>(NotificationRecipient.java:36) at com.atlassian.jira.notification.type.UserToRecipient.apply(UserToRecipient.java:21) at com.atlassian.jira.notification.type.UserToRecipient.apply(UserToRecipient.java:14) at com.google.common.collect.Lists$TransformingRandomAccessList.get(Lists.java:431) at java.util.AbstractList$Itr.next(AbstractList.java:345) at java.util.AbstractCollection.addAll(AbstractCollection.java:305) at com.atlassian.jira.notification.DefaultNotificationSchemeManager.getRecipients(DefaultNotificationSchemeManager.java:279) at com.atlassian.jira.event.listeners.mail.MailListener.createMailItems(MailListener.java:122) at com.atlassian.jira.event.listeners.mail.MailListener.sendNotification(MailListener.java:87) at com.atlassian.jira.event.listeners.mail.MailListener.issueCommented(MailListener.java:188) at com.atlassian.jira.event.issue.AbstractIssueEventListener.workflowEvent(AbstractIssueEventListener.java:106) at com.atlassian.jira.event.issue.IssueEventListenerHandler$IssueEventInvoker.invoke(IssueEventListenerHandler.java:49) at com.atlassian.event.internal.AsynchronousAbleEventDispatcher$2.run(AsynchronousAbleEventDispatcher.java:60) at com.atlassian.event.internal.AsynchronousAbleEventDispatcher$1.execute(AsynchronousAbleEventDispatcher.java:28) at com.atlassian.event.internal.AsynchronousAbleEventDispatcher.dispatch(AsynchronousAbleEventDispatcher.java:56) at com.atlassian.event.internal.EventPublisherImpl.invokeListeners(EventPublisherImpl.java:151) at com.atlassian.event.internal.EventPublisherImpl.publish(EventPublisherImpl.java:70) at sun.reflect.GeneratedMethodAccessor43.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at com.atlassian.multitenant.impl.MultiTenantComponentFactoryImpl$AbstractMultiTenantAwareInvocationHandler.invokeInternal(MultiTenantComponentFactoryImpl.java:181) at com.atlassian.multitenant.impl.MultiTenantComponentFactoryImpl$MultiTenantAwareInvocationHandler.invoke(MultiTenantComponentFactoryImpl.java:211) at $Proxy5.publish(Unknown Source) at com.atlassian.multitenant.event.DefaultPeeringEventPublisherManager.publish(DefaultPeeringEventPublisherManager.java:17) at com.atlassian.multitenant.event.PeeringEventPublisher.publish(PeeringEventPublisher.java:23) at com.atlassian.jira.event.issue.IssueEventDispatcher.dispatchEvent(IssueEventDispatcher.java:254) at com.atlassian.jira.event.issue.IssueEventDispatcher.dispatchEvent(IssueEventDispatcher.java:176) at com.atlassian.jira.web.action.issue.AddComment.alertSystemOfComment(AddComment.java:144) at com.atlassian.jira.web.action.issue.AddComment.doExecute(AddComment.java:109) at webwork.action.ActionSupport.execute(ActionSupport.java:165) at com.atlassian.jira.action.JiraActionSupport.execute(JiraActionSupport.java:76) at webwork.interceptor.DefaultInterceptorChain.proceed(DefaultInterceptorChain.java:39) at webwork.interceptor.NestedInterceptorChain.proceed(NestedInterceptorChain.java:31) at webwork.interceptor.ChainedInterceptor.intercept(ChainedInterceptor.java:16) at webwork.interceptor.DefaultInterceptorChain.proceed(DefaultInterceptorChain.java:35) at webwork.dispatcher.GenericDispatcher.executeAction(GenericDispatcher.java:205) at webwork.dispatcher.GenericDispatcher.executeAction(GenericDispatcher.java:143) at com.atlassian.jira.web.dispatcher.JiraWebworkActionDispatcher.service(JiraWebworkActionDispatcher.java:152) at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
This guy is caused by notifications - specifically an object is created for a user, then the checkNotNull() method is run on it. It generates a NPE as a check if it's null or not, rather than an NPE being generated later without any reason why. When the the deactivate users functionality was written this bug was addressed. This issue is a placeholder to publicly track that it has been fixed.
It can be caused by the following:
- Using an email address in notifications instead of a user. They have default notifications, so unfortunately this isn't the case.
- A user may have been deleted from their Active Directory and no longer exists within the database, yet is still a reporter, watcher or assignee of an issue.