Details
-
Bug
-
Resolution: Fixed
-
Low
-
8.16.0
-
8.16
-
3
-
Severity 3 - Minor
-
41
-
-
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
- Have batched notifications turned ON
- Under user profile, configure Email Type to "Text"
- 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
- is cloned by
-
DELTA-1119 Loading...
-
JSEV-2907 Loading...