Uploaded image for project: 'Jira Data Center'
  1. Jira Data Center
  2. JRASERVER-72313

Missing IssueUpdateBatcher.css file error in the logs when batching notification is enabled

    XMLWordPrintable

Details

    • 8.16
    • 3
    • Severity 3 - Minor
    • 41
    • Hide
      Atlassian Update – 15 Jul 2021

      Hi everyone,

      This issue is fixed and awaits for release.

      Thank you,
      Michał Błajet,
      Jira Developer

      Show
      Atlassian Update – 15 Jul 2021 Hi everyone, This issue is fixed and awaits for release. Thank you, Michał Błajet, Jira Developer

    Description

      Issue Summary

      When sending text type mail notifications, Jira complains that IssueUpdateBatcher.css file could not be found under templates/email-batch/text folder.

      Steps to Reproduce

      1. Have batched notifications turned ON
      2. Under user profile, configure Email Type to "Text"
      3. Trigger an issue notification to the user configured in step 2

      Expected Results

      No error messages in the logs

      Actual Results

      The below exception is thrown in the atlassian-jira.log file:

      2021-04-13 10:55:26,785-0300 Caesium-1-1 INFO ServiceRunner     [c.a.jira.template.JiraHomeTemplateContentLoaderImpl] File not found: /Users/astegani/deployments/jira8160/jira-home/data/templates/email-batch/text/IssueUpdateBatcher.css
      2021-04-13 10:55:26,786-0300 Caesium-1-1 WARN ServiceRunner     [c.a.jira.template.CachingJiraHomeTemplateContentLoaderImpl] Exception:
      com.atlassian.cache.CacheException: java.lang.RuntimeException: Couldn't load template! templateFile: templates/email-batch/text/IssueUpdateBatcher.css
      	at com.atlassian.cache.memory.DelegatingCache.get(DelegatingCache.java:212)
      	at com.atlassian.jira.template.CachingJiraHomeTemplateContentLoaderImpl.getTemplateContent(CachingJiraHomeTemplateContentLoaderImpl.java:56)
      	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
      	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      	at java.lang.reflect.Method.invoke(Method.java:498)
      	at com.atlassian.plugin.util.ContextClassLoaderSettingInvocationHandler.invoke(ContextClassLoaderSettingInvocationHandler.java:26)
      	at com.sun.proxy.$Proxy664.getTemplateContent(Unknown Source)
      	... 3 filtered
      	at java.lang.reflect.Method.invoke(Method.java:498)
      	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:343)
      	at org.eclipse.gemini.blueprint.service.importer.support.internal.aop.ServiceInvoker.doInvoke(ServiceInvoker.java:56)
      	at org.eclipse.gemini.blueprint.service.importer.support.internal.aop.ServiceInvoker.invoke(ServiceInvoker.java:60)
      	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
      	at org.springframework.aop.support.DelegatingIntroductionInterceptor.doProceed(DelegatingIntroductionInterceptor.java:136)
      	at org.springframework.aop.support.DelegatingIntroductionInterceptor.invoke(DelegatingIntroductionInterceptor.java:124)
      	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
      	at org.eclipse.gemini.blueprint.service.util.internal.aop.ServiceTCCLInterceptor.invokeUnprivileged(ServiceTCCLInterceptor.java:70)
      	at org.eclipse.gemini.blueprint.service.util.internal.aop.ServiceTCCLInterceptor.invoke(ServiceTCCLInterceptor.java:53)
      	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
      	at org.eclipse.gemini.blueprint.service.importer.support.LocalBundleContextAdvice.invoke(LocalBundleContextAdvice.java:57)
      	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
      	at org.springframework.aop.support.DelegatingIntroductionInterceptor.doProceed(DelegatingIntroductionInterceptor.java:136)
      	at org.springframework.aop.support.DelegatingIntroductionInterceptor.invoke(DelegatingIntroductionInterceptor.java:124)
      	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
      	at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:212)
      	at com.sun.proxy.$Proxy1618.getTemplateContent(Unknown Source)
      	at com.atlassian.jira.plugins.inform.batching.rendering.CachingJiraSharedHomeTemplateLoader.getTemplateContent(CachingJiraSharedHomeTemplateLoader.java:23)
      	at com.atlassian.jira.plugins.inform.batching.rendering.DelegatingTemplateLoader.getTemplateContent(DelegatingTemplateLoader.java:39)
      	at com.atlassian.jira.plugins.inform.batching.rendering.TemplateProviderImpl.getCssFileContentSafely(TemplateProviderImpl.java:89)
      	at com.atlassian.jira.plugins.inform.batching.rendering.TemplateProviderImpl.getTemplate(TemplateProviderImpl.java:73)
      	at com.atlassian.jira.plugins.inform.batching.BatcherServiceImpl.createEmail(BatcherServiceImpl.java:141)
      	at com.atlassian.jira.plugins.inform.batching.cron.BatchNotificationJob.sendEmail(BatchNotificationJob.java:159)
      	at com.atlassian.jira.plugins.inform.batching.cron.BatchNotificationJob.processBatches(BatchNotificationJob.java:144)
      	at com.atlassian.jira.plugins.inform.batching.cron.BatchNotificationJob.processEventBatch(BatchNotificationJob.java:127)
      	at com.atlassian.jira.plugins.inform.batching.cron.BatchNotificationJob.lambda$notifyUsers$0(BatchNotificationJob.java:100)
      	at com.atlassian.jira.plugins.inform.performance.MeasurementWorkerFactory$1.measure(MeasurementWorkerFactory.java:41)
      	at com.atlassian.jira.plugins.inform.batching.cron.BatchNotificationJob.notifyUsers(BatchNotificationJob.java:97)
      	at com.atlassian.jira.plugins.inform.batching.cron.BatchNotificationJob.runJob(BatchNotificationJob.java:82)
      	at com.atlassian.jira.plugins.inform.batching.cron.ConditionalJobRunner.runJob(ConditionalJobRunner.java:33)
      	at com.atlassian.jira.plugins.inform.batching.cron.ConditionalJobRunner.runJob(ConditionalJobRunner.java:33)
      	at com.atlassian.jira.plugins.inform.batching.cron.OncePerClusterJobRunner.runJob(OncePerClusterJobRunner.java:46)
      	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)
      Caused by: java.lang.RuntimeException: Couldn't load template! templateFile: templates/email-batch/text/IssueUpdateBatcher.css
      	at com.atlassian.jira.template.CachingJiraHomeTemplateContentLoaderImpl.lambda$null$0(CachingJiraHomeTemplateContentLoaderImpl.java:58)
      	at java.util.Optional.orElseThrow(Optional.java:290)
      	at com.atlassian.jira.template.CachingJiraHomeTemplateContentLoaderImpl.lambda$getTemplateContent$1(CachingJiraHomeTemplateContentLoaderImpl.java:58)
      	at com.atlassian.cache.memory.DelegatingCache.lambda$get$1(DelegatingCache.java:191)
      	at com.google.common.cache.LocalCache$LocalManualCache$1.load(LocalCache.java:4876)
      	at com.google.common.cache.LocalCache$Segment.loadSync(LocalCache.java:2277)
      	at com.google.common.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache.java:2154)
      	at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2044)
      	at com.google.common.cache.LocalCache.get(LocalCache.java:3952)
      	at com.google.common.cache.LocalCache$LocalManualCache.get(LocalCache.java:4871)
      	at com.atlassian.cache.memory.DelegatingCache.get(DelegatingCache.java:178)
      	... 54 more
      

      On a fresh 8.16 installation, the IssueUpdateBatcher.css file is located under email-batch/html folder but not on the email-batch/text folder

      Workaround

      Manually copy the IssueUpdateBatcher.css file from:

      • <Jira_shared_home>/data/templates/email-batch/html

      To

      • <Jira_shared_home>/data/templates/email-batch/text

      Attachments

        Issue Links

          Activity

            People

              cb173a7ca7c0 Michał Błajet
              astegani Alex Stegani
              Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: