[
https://issues.apache.org/jira/browse/SHINDIG-840?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12663179#action_12663179
]
Henning Schmiedehausen commented on SHINDIG-840:
------------------------------------------------
That is interesting because the registry is (as I understand it) designed as to
be loaded at init time and then locked read-ony (using the graphComplete
switch). How did you provoke this?
An alternative approach might be using a ConcurrentHashMap.
> GadgetFeatureRegistry access to features map is not correctly synzchronized
> ---------------------------------------------------------------------------
>
> Key: SHINDIG-840
> URL: https://issues.apache.org/jira/browse/SHINDIG-840
> Project: Shindig
> Issue Type: Bug
> Affects Versions: 1.0.0-rc1, 1.0.x-incubating
> Reporter: Vjekoslav Nesek
> Priority: Minor
>
> GadgetFeatureRegistry access to features map instance is not correctly
> synzchronized. It is easy to
> fix by synchronizing either on methods or instance.
> HTTP ERROR: 500
> INTERNAL_SERVER_ERROR
> RequestURI=/homepage/ifr
> Caused by:
> java.util.ConcurrentModificationException
> at java.util.HashMap$HashIterator.nextEntry(HashMap.java:793)
> at java.util.HashMap$KeyIterator.next(HashMap.java:828)
> at java.util.AbstractCollection.containsAll(AbstractCollection.java:278)
> at java.util.AbstractSet.equals(AbstractSet.java:78)
> at
> java.util.concurrent.ConcurrentHashMap$Segment.get(ConcurrentHashMap.java:338)
> at
> java.util.concurrent.ConcurrentHashMap.get(ConcurrentHashMap.java:769)
> at
> org.apache.shindig.gadgets.GadgetFeatureRegistry.getFeatures(GadgetFeatureRegistry.java:133)
> at
> org.apache.shindig.gadgets.GadgetFeatureRegistry.getFeatures(GadgetFeatureRegistry.java:116)
> at
> org.apache.shindig.gadgets.render.RenderingContentRewriter.injectFeatureLibraries(RenderingContentRewriter.java:185)
> at
> org.apache.shindig.gadgets.render.RenderingContentRewriter.rewrite(RenderingContentRewriter.java:127)
> at
> org.apache.shindig.gadgets.rewrite.DefaultContentRewriterRegistry.rewriteGadget(DefaultContentRewriterRegistry.java:75)
> at
> org.apache.shindig.gadgets.render.HtmlRenderer.render(HtmlRenderer.java:77)
> at org.apache.shindig.gadgets.render.Renderer.render(Renderer.java:93)
> at
> org.apache.shindig.gadgets.servlet.GadgetRenderingServlet.render(GadgetRenderingServlet.java:58)
> at
> org.apache.shindig.gadgets.servlet.GadgetRenderingServlet.doGet(GadgetRenderingServlet.java:93)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:707)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
> at
> org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:502)
> at
> org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1124)
> at
> org.apache.shindig.auth.AuthenticationServletFilter.doFilter(AuthenticationServletFilter.java:66)
> at
> org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1115)
> at
> com.planetj.servlet.filter.compression.CompressingFilter.doFilter(CompressingFilter.java:221)
> at
> org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1115)
> at
> org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:361)
> at
> org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
> at
> org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)
> at
> org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:757)
> at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:416)
> at
> org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:206)
> at
> org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114)
> at
> org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
> at org.mortbay.jetty.Server.handle(Server.java:324)
> at
> org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:502)
> at
> org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:826)
> at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:523)
> at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:211)
> at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:377)
> at
> org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:409)
> at
> org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:497)
> Powered by Jetty://
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.