Description
In certain situations, when wiki rendering the commit message of a watch email, the following exception is thrown:
2012-06-24 19:36:49,124 DEBUG [FE-WatchChecker ] perf.timer Timer-output - <- Querying 7 providers time 27 millis mem_usage = 355416568 heapsize = 540147712 freemem = 184731144 2012-06-24 19:36:49,131 DEBUG [FE-WatchChecker ] fisheye.app WatchEAV-update - Updating (createIfNeccessary=false) Watch[id=95;user=sruiz;rep=FEP;path=;constraint=null;lastChecked=1340584608619;lastRevisionSent=trunk/src/test/java/com/atlassian/jirafisheyeplugin/web/admin/fields/I18nHelperForTests.java@16861 3;csn=1271220978720] 2012-06-24 19:36:49,141 DEBUG [FE-WatchChecker ] perf.timer Timer-output - -> commit-msg-render mem_usage = 356334632 heapsize = 540147712 freemem = 183813080 2012-06-24 19:36:49,141 DEBUG [FE-WatchChecker ] perf.timer Timer-output - <- commit-msg-render time 0 millis mem_usage = 356334632 heapsize = 540147712 freemem = 183813080 2012-06-24 19:36:49,144 DEBUG [FE-WatchChecker ] perf.timer Timer-output - -> commit-msg-render mem_usage = 356601456 heapsize = 540147712 freemem = 183546256 2012-06-24 19:36:49,150 DEBUG [FE-WatchChecker ] fisheye.app Log4JLoggerFactory$Log4JLogger-error - not appending because we are in a different classloader: ContextLoader@FishEye WebApp 2012-06-24 19:36:49,166 ERROR [FE-WatchChecker ] fisheye.app DefaultWatchManager-sendEmailForChangesets - Exception processing watch email template Method public static java.lang.String com.cenqua.crucible.util.FreemarkerUtil.formatChangesetComment(com.cenqua.fisheye.RepositoryConfig,com.cenqua.fisheye.rep.ChangeSet) threw an exception The problematic instruction: ---------- ==> ${freemarkerUtil.formatChangesetComment(repcfg, cs)} [on line 55, column 17 in shared/html/changeset-header.ftl] in user-directive mainSection [on line 54, column 13 in shared/html/changeset-header.ftl] in user-directive changesetHeader [on line 20, column 5 in fisheye/html/changeset-mail.ftl] in user-directive layout [on line 18, column 1 in fisheye/html/changeset-mail.ftl] ---------- Java backtrace for programmers: ---------- freemarker.template.TemplateModelException: Method public static java.lang.String com.cenqua.crucible.util.FreemarkerUtil.formatChangesetComment(com.cenqua.fisheye.RepositoryConfig,com.cenqua.fisheye.rep.ChangeSet) threw an exception at freemarker.ext.beans.SimpleMethodModel.exec(SimpleMethodModel.java:125) at freemarker.core.MethodCall._getAsTemplateModel(MethodCall.java:93) at freemarker.core.Expression.getAsTemplateModel(Expression.java:89) at freemarker.core.Expression.getStringValue(Expression.java:93) at freemarker.core.DollarVariable.accept(DollarVariable.java:76) at freemarker.core.Environment.visit(Environment.java:209) at freemarker.core.MixedContent.accept(MixedContent.java:92) at freemarker.core.Environment.visit(Environment.java:209) at freemarker.core.Environment.visit(Environment.java:394) at freemarker.core.BodyInstruction.accept(BodyInstruction.java:93) at freemarker.core.Environment.visit(Environment.java:209) at freemarker.core.MixedContent.accept(MixedContent.java:92) at freemarker.core.Environment.visit(Environment.java:209) at freemarker.core.Macro$Context.runMacro(Macro.java:168) at freemarker.core.Environment.visit(Environment.java:602) at freemarker.core.UnifiedCall.accept(UnifiedCall.java:106) at freemarker.core.Environment.visit(Environment.java:209) at freemarker.core.MixedContent.accept(MixedContent.java:92) at freemarker.core.Environment.visit(Environment.java:209) at freemarker.core.Macro$Context.runMacro(Macro.java:168) at freemarker.core.Environment.visit(Environment.java:602) at freemarker.core.UnifiedCall.accept(UnifiedCall.java:106) at freemarker.core.Environment.visit(Environment.java:209) at freemarker.core.MixedContent.accept(MixedContent.java:92) at freemarker.core.Environment.visit(Environment.java:209) at freemarker.core.IteratorBlock$Context.runLoop(IteratorBlock.java:179) at freemarker.core.Environment.visit(Environment.java:416) at freemarker.core.IteratorBlock.accept(IteratorBlock.java:102) at freemarker.core.Environment.visit(Environment.java:209) at freemarker.core.MixedContent.accept(MixedContent.java:92) at freemarker.core.Environment.visit(Environment.java:209) at freemarker.core.Environment.visit(Environment.java:394) at freemarker.core.BodyInstruction.accept(BodyInstruction.java:93) at freemarker.core.Environment.visit(Environment.java:209) at freemarker.core.MixedContent.accept(MixedContent.java:92) at freemarker.core.Environment.visit(Environment.java:209) at freemarker.core.Macro$Context.runMacro(Macro.java:168) at freemarker.core.Environment.visit(Environment.java:602) at freemarker.core.UnifiedCall.accept(UnifiedCall.java:106) at freemarker.core.Environment.visit(Environment.java:209) at freemarker.core.MixedContent.accept(MixedContent.java:92) at freemarker.core.Environment.visit(Environment.java:209) at freemarker.core.Environment.process(Environment.java:189) at freemarker.template.Template.process(Template.java:237) at com.cenqua.fisheye.web.DefaultWatchManager.sendEmailForChangesets(DefaultWatchManager.java:606) at com.cenqua.fisheye.web.DefaultWatchManager.access$400(DefaultWatchManager.java:63) at com.cenqua.fisheye.web.DefaultWatchManager$WatchChecker.checkWatchesForRep(DefaultWatchManager.java:279) at com.cenqua.fisheye.web.DefaultWatchManager$WatchChecker.checkWatchesForRep(DefaultWatchManager.java:211) at com.cenqua.fisheye.web.DefaultWatchManager$WatchChecker.run(DefaultWatchManager.java:184) at java.lang.Thread.run(Thread.java:662) Caused by: java.lang.IllegalArgumentException: No local entity with key 'FEP' and type 'class com.atlassian.applinks.application.fecru.FishEyeRepositoryEntityTypeImpl' exists at com.atlassian.applinks.core.DefaultEntityLinkService.getStoredEntityLinks(DefaultEntityLinkService.java:376) at com.atlassian.applinks.core.DefaultEntityLinkService.getEntityLinksForKey(DefaultEntityLinkService.java:541) at com.atlassian.applinks.core.DefaultEntityLinkService.getEntityLinksForKey(DefaultEntityLinkService.java:531) at com.atlassian.applinks.core.DefaultEntityLinkService.getEntityLinks(DefaultEntityLinkService.java:556) at sun.reflect.GeneratedMethodAccessor928.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at com.atlassian.applinks.host.OsgiServiceProxyFactory$DynamicServiceInvocationHandler.invoke(OsgiServiceProxyFactory.java:111) at $Proxy51.getEntityLinks(Unknown Source) at com.cenqua.fisheye.syntax.LinkerFactory.getJiraLinker(LinkerFactory.java:113) at com.cenqua.fisheye.syntax.DefaultLinkerService.createLinker(DefaultLinkerService.java:66) at com.cenqua.fisheye.syntax.DefaultLinkerService.getLinker(DefaultLinkerService.java:57) at com.cenqua.fisheye.syntax.DefaultLinkerService.getRepositoryLinker(DefaultLinkerService.java:28) at com.cenqua.fisheye.web.themer.BriefCheckinCommentTag.renderCheckinComment(BriefCheckinCommentTag.java:113) at com.cenqua.fisheye.web.themer.BriefCheckinCommentTag.doTag(BriefCheckinCommentTag.java:98) at com.cenqua.fisheye.web.util.CheckinCommentFormatter.format(CheckinCommentFormatter.java:37) at com.cenqua.crucible.util.FreemarkerUtil.formatChangesetComment(FreemarkerUtil.java:74) at sun.reflect.GeneratedMethodAccessor2152.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at freemarker.ext.beans.BeansWrapper.invokeMethod(BeansWrapper.java:840) at freemarker.ext.beans.SimpleMethodModel.exec(SimpleMethodModel.java:106) ... 49 more 2012-06-24 19:36:49,167 DEBUG [FE-WatchChecker ] fisheye.app DefaultWatchManager-sendEmailForChangesets - not appending because we are in a different classloader: ContextLoader@FishEye WebApp 2012-06-24 19:36:49,167 DEBUG [FE-WatchChecker ] fisheye.perf RepositoryHandle-release - release engine on FEP, count=2 2012-06-24 19:36:49,167 DEBUG [FE-WatchChecker ] fisheye.perf RepositoryHandle-release - release engine on FEP, count=1 2012-06-24 19:36:49,220 DEBUG [CommitNotifier1 ] fisheye.perf RepositoryHandle-release - release engine on FEP, count=0
The Entity Links for FEP definitely appear to be configured.
If this was the result of a permission issue, I would expect to see another log message explaining what permission is missing and for whom.
I am going to add a workaround fix for this, which will log an error when there is any exception thrown during rendering of a commit message, yet still send the watch email, with the commit message not wiki rendered.
I will also be looking into how this situation can occur.