Uploaded image for project: 'Confluence Data Center'
  1. Confluence Data Center
  2. CONFSERVER-34883

Recommended Updates email aren't delivered to some users

    XMLWordPrintable

Details

    Description

      Steps to Replicate:

      1. Enable DEBUG logging on the package: com.atlassian.confluence.plugins.dailysummary
      2. Leave Confluence running for either a whole day, or change one of your user's timezones so that it's 1pm their time (as running Recommended Updates Email task on Scheduled Jobs does nothing unless it's 1pm) and run the task via Confluence Admin > Scheduled Jobs)

      Observe in the logs:

      2014-09-10 12:49:04,600 INFO [scheduler_Worker-10] [plugins.dailysummary.scheduling.SummaryEmailJob] execute Executing scheduled Summary Email Job
      2014-09-10 12:49:04,615 DEBUG [scheduler_Worker-10] [dailysummary.components.impl.DefaultSummaryEmailNotificationManager] apply Evaluating summary email condition for com.atlassian.confluence.user.ConfluenceUserImpl@51b0ae55[admin,2c968038483f388201483f39732f0001] sending is: true, hour : 13, enabled true, schedule daily, dayofweek 4
      2014-09-10 12:49:04,618 INFO [scheduler_Worker-10] [dailysummary.components.impl.DefaultSummaryEmailService] sendEmailForDate Summary email job firing @ Wed Sep 10 12:49:04 EST 2014, scheduled fire time was : Wed Sep 10 12:49:04 EST 2014.  true users to receive notifications.
      2014-09-10 12:49:04,654 DEBUG [scheduler_Worker-10] [dailysummary.content.popular.PopularContentManager] getPopularContent Getting popular content for com.atlassian.confluence.user.ConfluenceUserImpl@51b0ae55[admin,2c968038483f388201483f39732f0001] on Wed Sep 10 12:49:04 EST 2014
      2014-09-10 12:49:05,119 INFO [scheduler_Worker-10] [dailysummary.content.popular.PopularContentPanel] getHtml info: gettingHtml with webPanel id : com.atlassian.confluence.plugins.dailysummary.content.popular.PopularContentPanel@4120b17b
      Using context :{dateFormatter=com.atlassian.confluence.core.DateFormatter@496423a4, settingsManager=com.atlassian.confluence.setup.settings.DefaultSettingsManager@a989cb6, userAccessor=com.atlassian.confluence.user.DefaultUserAccessor@6eb592f3, contentUiSupport=com.atlassian.confluence.content.ui.DefaultContentUiSupport@5600df49, summary-schedule=weekly, docBean=com.atlassian.confluence.util.i18n.VersionSpecificDocumentationBean@17d91b5, action=com.atlassian.confluence.core.ConfluenceActionSupport@5ae902d6, attachmentManager=com.atlassian.confluence.pages.CachingAttachmentManager@395d66ea, pageManager=com.atlassian.confluence.pages.DefaultPageManager@596695b9, stringUtils=org.apache.commons.lang.StringUtils@2be7508d, renderBean=com.atlassian.confluence.util.QuickPageRenderBean@37297fed, summary-panel-data=[com.atlassian.confluence.plugins.dailysummary.content.SummaryEmailPanelData@5c180f0f], spaceManager=com.atlassian.confluence.spaces.DefaultSpaceManager@3cabecc6, textUtil=com.opensymphony.util.TextUtils@3b45da48, spaceUtils=com.atlassian.confluence.spaces.SpaceUtils@66fdcb5e, staticResourceUrlPrefix=/confluence/s/en_GB/5635/60fd2eb45debbf4ede2b669f4c9b96b4ce40a937.1/_, officeVelocityHelper=com.atlassian.confluence.extra.office.velocity.VelocityHelper@5ea019b1, licenseService=com.atlassian.confluence.license.DefaultLicenseService@58d3dbc0, formattedDate=Sep 10, 2014, WebPanelDataSources=[], webResourceHelper=com.atlassian.confluence.setup.velocity.VelocityFriendlyPageBuilderService@4cbee4b1, popular-content-like-icon=com.atlassian.confluence.core.DefaultDataSourceFactory$NamedDataSource@aa5b786b, res=null, bootstrap=com.atlassian.confluence.setup.DefaultBootstrapManager@61e13dae, summary-email-popular-content-excerpts=[PopularContentExcerptDto [contentTitle=I maked this for you, imageDatasources={minion=com.atlassian.confluence.plugins.dailysummary.content.RenderedImageDataSource@2f84d105}, networkParticipants=[], commentCount=1, likeCount=0, author=com.atlassian.confluence.user.ConfluenceUserImpl@3f937813[minion,2c9680ca485d4efe01485d593d320001], excerptHtml=<p>Stones!</p>, contentLink=/display/TT/I+maked+this+for+you]], seraph=com.atlassian.confluence.util.SeraphUtils@52c2c84d, summary-recipient=com.atlassian.confluence.user.ConfluenceUserImpl@51b0ae55[admin,2c968038483f388201483f39732f0001], xsrfTokenGenerator=com.atlassian.xwork.SimpleXsrfTokenGenerator@71ec61ad, userHelper=com.atlassian.confluence.user.UserHelper@53435dbb, setup=com.atlassian.confluence.setup.DefaultBootstrapManager@61e13dae, darkFeatures=com.atlassian.confluence.setup.settings.DarkFeatures@80b355, generalUtil=com.atlassian.confluence.util.GeneralUtil@1ad97053, buildInfo=5.6.1 [build 5635 based on commit hash 60fd2eb45debbf4ede2b669f4c9b96b4ce40a937], systemProperties=com.atlassian.confluence.core.ConfluenceSystemProperties@5defd289, docThemeHelper=com.atlassian.confluence.plugins.doctheme.DocThemeHelper@4fd5841a, setupPersister=com.atlassian.confluence.setup.DefaultSetupPersister@5f596f7f, deprecated=com.atlassian.confluence.velocity.Deprecated@68a72bc0, i18nBean=com.atlassian.confluence.util.i18n.DefaultI18NBean@58dbce6, summary-date=Wed Sep 10 12:49:04 EST 2014, fileUtil=com.atlassian.core.util.FileUtils@1c6ca2e3, summary-space=null, webwork=com.opensymphony.webwork.util.VelocityWebWorkUtil@77b95e3a, permissionHelper=com.atlassian.confluence.security.PermissionHelper@2032bd25, spaceToolsTabsHelper=com.atlassian.confluence.spaces.actions.SpaceToolsTabsHelper@631fd8a6, applicationConfig=com.atlassian.config.ApplicationConfig@3fc8ad21, webMenuManager=com.atlassian.confluence.web.LegacyConfluenceWebMenuManager@fde723e, utilTimerStack=com.atlassian.util.profiling.UtilTimerStack@551e4c95, confluenceFlavour=VANILLA, webInterfaceManager=com.atlassian.confluence.plugin.descriptor.web.ConfluenceWebInterfaceManager@60f6e3ff, jsonator=com.atlassian.confluence.json.jsonator.DefaultJsonator@23bed44d, messageManager=com.atlassian.confluence.util.message.DefaultMessageManager@17eb4c24, permissionCheckDispatcher=com.atlassian.confluence.security.PermissionCheckDispatcher@3d0047cf, popular-content-comment-icon=com.atlassian.confluence.core.DefaultDataSourceFactory$NamedDataSource@d8c8850b, webResourceManager=com.atlassian.confluence.plugin.webresource.DefaultConfluenceWebResourceManager@5d6a8652, i18n=com.atlassian.confluence.util.i18n.DefaultI18NBean@58dbce6, soyTemplateRendererHelper=com.atlassian.confluence.plugins.soy.VelocityFriendlySoyTemplateRenderer@7c98a167, req=com.atlassian.confluence.util.ConfluenceMockServletRequest@2ad96f3e, summary-unsubscribe-token=9db46730e221947139518b3d789453f1b6795ae3}
      2014-09-10 12:49:05,382 WARN [scheduler_Worker-10] [dailysummary.components.impl.DefaultSummaryEmailTaskFactory] renderContentExcerpts Skipping web panel [com.atlassian.confluence.plugins.confluence-inline-tasks:recommended-email-tasks-panel] since it escaped with message [null]. Enable TRACE for this log to see the full stack trace of this exception.
      2014-09-10 12:49:05,929 DEBUG [scheduler_Worker-10] [dailysummary.components.impl.DefaultSummaryEmailNotificationManager] apply Not sending email to minion, hour of day is 12 and needs to be 13 in timezone : sun.util.calendar.ZoneInfo[id="Australia/Melbourne",offset=36000000,dstSavings=3600000,useDaylight=true,transitions=142,lastRule=java.util.SimpleTimeZone[id=Australia/Melbourne,offset=36000000,dstSavings=3600000,useDaylight=true,startYear=0,startMode=3,startMonth=9,startDay=1,startDayOfWeek=1,startTime=7200000,startTimeMode=1,endMode=3,endMonth=3,endDay=1,endDayOfWeek=1,endTime=7200000,endTimeMode=1]]
      2014-09-10 12:49:05,932 ERROR [scheduler_Worker-10] [org.quartz.core.JobRunShell] run Job com.atlassian.confluence.plugins.confluence-daily-summary-email.summaryEmail threw an unhandled Exception: 
      org.springframework.transaction.UnexpectedRollbackException: Transaction rolled back because it has been marked as rollback-only
      	at org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:695)
      	at sun.reflect.GeneratedMethodAccessor44.invoke(Unknown Source)
      	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      	at java.lang.reflect.Method.invoke(Method.java:606)
      	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:307)
      	at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:198)
      	at com.sun.proxy.$Proxy13.commit(Unknown Source)
      	at org.springframework.transaction.support.TransactionTemplate.execute(TransactionTemplate.java:140)
      	at com.atlassian.sal.spring.component.SpringHostContextAccessor.doInTransaction(SpringHostContextAccessor.java:82)
      	at sun.reflect.GeneratedMethodAccessor149.invoke(Unknown Source)
      	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      	at java.lang.reflect.Method.invoke(Method.java:606)
      	at com.atlassian.plugin.osgi.hostcomponents.impl.DefaultComponentRegistrar$ContextClassLoaderSettingInvocationHandler.invoke(DefaultComponentRegistrar.java:129)
      	at com.sun.proxy.$Proxy238.doInTransaction(Unknown Source)
      	at sun.reflect.GeneratedMethodAccessor149.invoke(Unknown Source)
      	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      	at java.lang.reflect.Method.invoke(Method.java:606)
      	at com.atlassian.plugin.osgi.bridge.external.HostComponentFactoryBean$DynamicServiceInvocationHandler.invoke(HostComponentFactoryBean.java:154)
      	at com.sun.proxy.$Proxy238.doInTransaction(Unknown Source)
      	at com.atlassian.sal.core.transaction.HostContextTransactionTemplate.execute(HostContextTransactionTemplate.java:21)
      	at sun.reflect.GeneratedMethodAccessor177.invoke(Unknown Source)
      	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      	at java.lang.reflect.Method.invoke(Method.java:606)
      	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:307)
      	at org.springframework.osgi.service.importer.support.internal.aop.ServiceInvoker.doInvoke(ServiceInvoker.java:58)
      	at org.springframework.osgi.service.importer.support.internal.aop.ServiceInvoker.invoke(ServiceInvoker.java:62)
      	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
      	at org.springframework.aop.support.DelegatingIntroductionInterceptor.doProceed(DelegatingIntroductionInterceptor.java:131)
      	at org.springframework.aop.support.DelegatingIntroductionInterceptor.invoke(DelegatingIntroductionInterceptor.java:119)
      	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
      	at org.springframework.osgi.service.util.internal.aop.ServiceTCCLInterceptor.invokeUnprivileged(ServiceTCCLInterceptor.java:56)
      	at org.springframework.osgi.service.util.internal.aop.ServiceTCCLInterceptor.invoke(ServiceTCCLInterceptor.java:39)
      	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
      	at org.springframework.osgi.service.importer.support.LocalBundleContextAdvice.invoke(LocalBundleContextAdvice.java:59)
      	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
      	at org.springframework.aop.support.DelegatingIntroductionInterceptor.doProceed(DelegatingIntroductionInterceptor.java:131)
      	at org.springframework.aop.support.DelegatingIntroductionInterceptor.invoke(DelegatingIntroductionInterceptor.java:119)
      	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
      	at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
      	at com.sun.proxy.$Proxy826.execute(Unknown Source)
      	at com.atlassian.confluence.plugins.dailysummary.components.impl.DefaultSummaryEmailService.sendEmailForDate(DefaultSummaryEmailService.java:57)
      	at com.atlassian.confluence.plugins.dailysummary.scheduling.SummaryEmailJob.execute(SummaryEmailJob.java:34)
      	at com.atlassian.confluence.plugin.descriptor.JobModuleDescriptor$DelegatingPluginJob.execute(JobModuleDescriptor.java:149)
      	at org.quartz.core.JobRunShell.run(JobRunShell.java:199)
      	at com.atlassian.confluence.schedule.quartz.ConfluenceQuartzThreadPool$1.run(ConfluenceQuartzThreadPool.java:22)
      	at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:549)
      2014-09-10 12:49:05,934 ERROR [scheduler_Worker-10] [org.quartz.core.ErrorLogger] schedulerError Job (com.atlassian.confluence.plugins.confluence-daily-summary-email.summaryEmail threw an exception.
      org.quartz.SchedulerException: Job threw an unhandled exception. [See nested exception: org.springframework.transaction.UnexpectedRollbackException: Transaction rolled back because it has been marked as rollback-only]
      	at org.quartz.core.JobRunShell.run(JobRunShell.java:210)
      	at com.atlassian.confluence.schedule.quartz.ConfluenceQuartzThreadPool$1.run(ConfluenceQuartzThreadPool.java:22)
      	at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:549)
      Caused by: org.springframework.transaction.UnexpectedRollbackException: Transaction rolled back because it has been marked as rollback-only
      	at org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:695)
      	at sun.reflect.GeneratedMethodAccessor44.invoke(Unknown Source)
      	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      	at java.lang.reflect.Method.invoke(Method.java:606)
      	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:307)
      	at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:198)
      	at com.sun.proxy.$Proxy13.commit(Unknown Source)
      	at org.springframework.transaction.support.TransactionTemplate.execute(TransactionTemplate.java:140)
      	at com.atlassian.sal.spring.component.SpringHostContextAccessor.doInTransaction(SpringHostContextAccessor.java:82)
      	at sun.reflect.GeneratedMethodAccessor149.invoke(Unknown Source)
      	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      	at java.lang.reflect.Method.invoke(Method.java:606)
      	at com.atlassian.plugin.osgi.hostcomponents.impl.DefaultComponentRegistrar$ContextClassLoaderSettingInvocationHandler.invoke(DefaultComponentRegistrar.java:129)
      	at com.sun.proxy.$Proxy238.doInTransaction(Unknown Source)
      	at sun.reflect.GeneratedMethodAccessor149.invoke(Unknown Source)
      	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      	at java.lang.reflect.Method.invoke(Method.java:606)
      	at com.atlassian.plugin.osgi.bridge.external.HostComponentFactoryBean$DynamicServiceInvocationHandler.invoke(HostComponentFactoryBean.java:154)
      	at com.sun.proxy.$Proxy238.doInTransaction(Unknown Source)
      	at com.atlassian.sal.core.transaction.HostContextTransactionTemplate.execute(HostContextTransactionTemplate.java:21)
      	at sun.reflect.GeneratedMethodAccessor177.invoke(Unknown Source)
      	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      	at java.lang.reflect.Method.invoke(Method.java:606)
      	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:307)
      	at org.springframework.osgi.service.importer.support.internal.aop.ServiceInvoker.doInvoke(ServiceInvoker.java:58)
      	at org.springframework.osgi.service.importer.support.internal.aop.ServiceInvoker.invoke(ServiceInvoker.java:62)
      	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
      	at org.springframework.aop.support.DelegatingIntroductionInterceptor.doProceed(DelegatingIntroductionInterceptor.java:131)
      	at org.springframework.aop.support.DelegatingIntroductionInterceptor.invoke(DelegatingIntroductionInterceptor.java:119)
      	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
      	at org.springframework.osgi.service.util.internal.aop.ServiceTCCLInterceptor.invokeUnprivileged(ServiceTCCLInterceptor.java:56)
      	at org.springframework.osgi.service.util.internal.aop.ServiceTCCLInterceptor.invoke(ServiceTCCLInterceptor.java:39)
      	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
      	at org.springframework.osgi.service.importer.support.LocalBundleContextAdvice.invoke(LocalBundleContextAdvice.java:59)
      	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
      	at org.springframework.aop.support.DelegatingIntroductionInterceptor.doProceed(DelegatingIntroductionInterceptor.java:131)
      	at org.springframework.aop.support.DelegatingIntroductionInterceptor.invoke(DelegatingIntroductionInterceptor.java:119)
      	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
      	at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
      	at com.sun.proxy.$Proxy826.execute(Unknown Source)
      	at com.atlassian.confluence.plugins.dailysummary.components.impl.DefaultSummaryEmailService.sendEmailForDate(DefaultSummaryEmailService.java:57)
      	at com.atlassian.confluence.plugins.dailysummary.scheduling.SummaryEmailJob.execute(SummaryEmailJob.java:34)
      	at com.atlassian.confluence.plugin.descriptor.JobModuleDescriptor$DelegatingPluginJob.execute(JobModuleDescriptor.java:149)
      	at org.quartz.core.JobRunShell.run(JobRunShell.java:199)
      	... 2 more

      Enabling TRACE logging (to do so, follow these instructions) shows:

      2014-09-18 20:28:14,603 WARN [scheduler_Worker-8] [dailysummary.components.impl.DefaultSummaryEmailTaskFactory] renderContentExcerpts Skipping web panel [com.atlassian.confluence.plugins.confluence-inline-tasks:recommended-email-tasks-panel] since it escaped with message [null]. Enable TRACE for this log to see the full stack trace of this exception.
      2014-09-18 20:28:14,604 TRACE [scheduler_Worker-8] [dailysummary.components.impl.DefaultSummaryEmailTaskFactory] renderContentExcerpts 
      java.lang.NullPointerException
      	at com.atlassian.confluence.plugins.tasklist.ao.dao.AOInlineTaskDao.searchTask(AOInlineTaskDao.java:344)
      	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
      	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
      	at java.lang.reflect.Method.invoke(Method.java:597)
      	at com.atlassian.activeobjects.tx.TransactionalProxy.invoke(TransactionalProxy.java:79)Confluence Inline Tasks
      	at com.atlassian.activeobjects.tx.TransactionalProxy.access$000(TransactionalProxy.java:18)
      	at com.atlassian.activeobjects.tx.TransactionalProxy$1.doInTransaction(TransactionalProxy.java:63)
      	at com.atlassian.sal.core.transaction.HostContextTransactionTemplate$1.doInTransaction(HostContextTransactionTemplate.java:25)
      	at com.atlassian.sal.spring.component.SpringHostContextAccessor$1.doInTransaction(SpringHostContextAccessor.java:88)
      	at org.springframework.transaction.support.TransactionTemplate.execute(TransactionTemplate.java:128)
      	at com.atlassian.sal.spring.component.SpringHostContextAccessor.doInTransaction(SpringHostContextAccessor.java:82)
      	at sun.reflect.GeneratedMethodAccessor89.invoke(Unknown Source)
      

      This is caused by Overdue and upcoming tasks in recommended content email module of Confluence Inline Tasks.

      Workaround

      1. Navigate to Confluence Admin > Manage add-ons.
      2. Under System plugins, search for Confluence Inline Tasks.
      3. Expand the modules, and locate Overdue and upcoming tasks in recommended content email and disable it.

      Attachments

        Issue Links

          Activity

            People

              Unassigned Unassigned
              ldally lachland
              Votes:
              12 Vote for this issue
              Watchers:
              17 Start watching this issue

              Dates

                Created:
                Updated: