Details
-
Bug
-
Resolution: Fixed
-
High
-
None
Description
The problem is that the renderer is lazy loaded (when the first issue with at least one wiki field is viewed) and if 2 or more threads hit the initialisation at the same time they fall over each other. The following errors appear in the logs:
org.picocontainer.defaults.DuplicateComponentKeyRegistrationException: Key code.macro.formatters duplicated
at org.picocontainer.defaults.DefaultPicoContainer.registerComponent(DefaultPicoContainer.java:190)
at org.picocontainer.defaults.DefaultPicoContainer.registerComponentInstance(DefaultPicoContainer.java:221)
at com.atlassian.jira.issue.fields.renderer.wiki.WikiRendererFactory.registerWikiWithContainer(WikiRendererFactory.java:67)
at com.atlassian.jira.issue.fields.renderer.wiki.WikiRendererFactory.getWikiRenderer(WikiRendererFactory.java:39)
at com.atlassian.jira.issue.fields.renderer.wiki.AtlassianWikiRenderer.getRendererFacade(AtlassianWikiRenderer.java:58)
at com.atlassian.jira.issue.fields.renderer.wiki.AtlassianWikiRenderer.render(AtlassianWikiRenderer.java:23)
at com.atlassian.jira.issue.managers.DefaultRendererManager.getRenderedContent(DefaultRendererManager.java:88)
at com.atlassian.jira.web.action.issue.ViewIssue.getRenderedContent(ViewIssue.java:1120)
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:585)
at webwork.util.InjectionUtils$DefaultInjectionImpl.invoke(InjectionUtils.java:61)
at webwork.util.InjectionUtils.invoke(InjectionUtils.java:52)
at webwork.util.ValueStack.findValue(ValueStack.java:426)
at webwork.util.ValueStack.findValue(ValueStack.java:175)
at webwork.view.taglib.WebWorkBodyTagSupport.findValue(WebWorkBodyTagSupport.java:61)
at webwork.view.taglib.BasicPropertyTag.doStartTag(BasicPropertyTag.java:54)
at org.apache.jsp.secure.views.issue.viewissue_jsp._jspx_meth_webwork_property_9(org.apache.jsp.secure.views.issue.viewissue_jsp:1015)
at org.apache.jsp.secure.views.issue.viewissue_jsp._jspx_meth_webwork_if_6(org.apache.jsp.secure.views.issue.viewissue_jsp:970)
at org.apache.jsp.secure.views.issue.viewissue_jsp._jspx_meth_webwork_property_8(org.apache.jsp.secure.views.issue.viewissue_jsp:922)
at org.apache.jsp.secure.views.issue.viewissue_jsp._jspService(org.apache.jsp.secure.views.issue.viewissue_jsp:208)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:322)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:291)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:672)
at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:463)
at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:398)
at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:301)
at com.atlassian.jira.web.dispatcher.JiraServletDispatcher.service(JiraServletDispatcher.java:248)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:672)
at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:463)
at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:398)
The second problem is that the WikiRendererFactory caches things statically which means that they are not reloaded properly after a data import.
A work around is to restart JIRA after the import.
Attachments
Issue Links
- was cloned as
-
JRASERVER-11122 CLONE -Initialisation of wiki renderer is static and is not synchronized
- Closed