portals-jetspeed-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Bjorn Vidar Remme (JIRA)" <jetspeed-...@jakarta.apache.org>
Subject [jira] Commented: (JS1-526) Hyperthreading causes registry/PSML loading errors
Date Tue, 30 Nov 2004 14:06:32 GMT
     [ http://nagoya.apache.org/jira/browse/JS1-526?page=comments#action_56028 ]
     
Bjorn Vidar Remme commented on JS1-526:
---------------------------------------

I finally had time to investigate this problem in detail and I have created a patch that solved
this issue on all our servers (attachment JS1-526-patch.txt). 

To fix this I added more debug code to the CastorPSMLManagerService and the LateInitCastorRegistryService.
Then I compared the logs when Jetspeed 1.6 worked and when it crashed (as I have mentioned
before,  it works if I generate some load on the server).

Comparing the logs I found out that the services runs in two different threads (psml in main
and lateInit in Deamonthread:feeddeamon). I then discovered that the crashes occurs when both
threads loads a Castor mapping at the same time. The Mapping.loadMapping() method appears
not to be thread safe...  Synchronizing all access to the Mapping.loadMapping() methods seems
to be the solution (see new SynchronizedMapping class).

The Unmarshaller.unmarshal() methods appears to be thread safe, can anyone comment on this
please?


> Hyperthreading causes registry/PSML loading errors
> --------------------------------------------------
>
>          Key: JS1-526
>          URL: http://nagoya.apache.org/jira/browse/JS1-526
>      Project: Jetspeed
>         Type: Bug
>   Components: PSML, Registry
>     Versions: 1.6-dev
>  Environment: Windows servers (2000/2003) with hyperthreading CPUs (or multiple CPU)
>     Reporter: Bjorn Vidar Remme
>     Priority: Blocker
>  Attachments: JS1-526-patch.txt
>
> Running Jetspeed 1.6-dev (HEAD -> 2004-11-23) throws exceptions when reading xreg
& psml files if the system has more than more CPU (or hyperthreading). This affects 1.6-dev
only, 1.5 works perfectly. 
> After disabling hyperthreading Jetspeed-1.6 works perfectly (confirmed on three different
servers). 
> Where the problem occurs is a bit random, and is affected by the server load.
> The problem seems to be associated with the classes 'LateCastorRegistryService' and 'CastorPsmlManagerService'.
> Please contact me for more information if needed.
> Here is an example exception from the jetspeedservices log (not very informative):
> 2004-11-24 11:27:34,656 [http-8080-Processor25] ERROR CastorPsmlManagerService - PSMLManager:
Could not unmarshal the file D:\apache\Tomcat_5.0\webapps\jetspeed-1.6-dev-20041123\WEB-INF\psml\user\anon\html\default.psml
> org.xml.sax.SAXException: The class for the root element 'portlets' could not be found.
> 	at org.exolab.castor.xml.UnmarshalHandler.startElement(UnmarshalHandler.java:595)
> 	at org.exolab.castor.xml.util.DOMEventProducer.process(DOMEventProducer.java:245)
> 	at org.exolab.castor.xml.util.DOMEventProducer.process(DOMEventProducer.java:182)
> 	at org.exolab.castor.xml.util.DOMEventProducer.processChildren(DOMEventProducer.java:333)
> 	at org.exolab.castor.xml.util.DOMEventProducer.process(DOMEventProducer.java:134)
> 	at org.exolab.castor.xml.util.DOMEventProducer.process(DOMEventProducer.java:170)
> 	at org.exolab.castor.xml.util.DOMEventProducer.start(DOMEventProducer.java:110)
> 	at org.exolab.castor.xml.Unmarshaller.unmarshal(Unmarshaller.java:290)
> 	at org.exolab.castor.xml.Unmarshaller.unmarshal(Unmarshaller.java:374)
> 	at org.apache.jetspeed.services.psmlmanager.CastorPsmlManagerService.loadDocument(CastorPsmlManagerService.java:472)
> 	at org.apache.jetspeed.services.psmlmanager.CastorPsmlManagerService.getDocument(CastorPsmlManagerService.java:387)
> 	at org.apache.jetspeed.services.psmlmanager.CastorPsmlManagerService.getDocument(CastorPsmlManagerService.java:340)
> 	at org.apache.jetspeed.services.PsmlManager.getDocument(PsmlManager.java:72)
> 	at org.apache.jetspeed.services.profiler.JetspeedProfilerService.fallback(JetspeedProfilerService.java:734)
> 	at org.apache.jetspeed.services.profiler.JetspeedProfilerService.fallbackProfile(JetspeedProfilerService.java:509)
> 	at org.apache.jetspeed.services.profiler.JetspeedProfilerService.getProfile(JetspeedProfilerService.java:262)
> 	at org.apache.jetspeed.services.profiler.JetspeedProfilerService.getProfile(JetspeedProfilerService.java:545)
> 	at org.apache.jetspeed.services.Profiler.getProfile(Profiler.java:87)
> 	at org.apache.jetspeed.modules.actions.JetspeedAccessController.doPerform(JetspeedAccessController.java:74)
> 	at org.apache.turbine.modules.Action.perform(Action.java:87)
> 	at org.apache.turbine.modules.ActionLoader.exec(ActionLoader.java:122)
> 	at org.apache.turbine.Turbine.doGet(Turbine.java:529)
> 	at javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
> 	at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
> 	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:237)
> 	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
> 	at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:704)
> 	at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:474)
> 	at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:409)
> 	at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:312)
> 	at org.apache.jasper.runtime.PageContextImpl.doForward(PageContextImpl.java:670)
> 	at org.apache.jasper.runtime.PageContextImpl.forward(PageContextImpl.java:637)
> 	at org.apache.jsp.index_jsp._jspService(index_jsp.java:45)
> 	at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
> 	at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
> 	at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324)
> 	at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
> 	at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
> 	at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
> 	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:237)
> 	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
> 	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:214)
> 	at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
> 	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
> 	at org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:198)
> 	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:152)
> 	at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
> 	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
> 	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137)
> 	at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
> 	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:118)
> 	at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
> 	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
> 	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
> 	at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
> 	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
> 	at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929)
> 	at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160)
> 	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799)
> 	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:705)
> 	at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577)
> 	at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683)
> 	at java.lang.Thread.run(Thread.java:534)

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://nagoya.apache.org/jira/secure/Administrators.jspa
-
If you want more information on JIRA, or have a bug to report see:
   http://www.atlassian.com/software/jira


---------------------------------------------------------------------
To unsubscribe, e-mail: jetspeed-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: jetspeed-dev-help@jakarta.apache.org


Mime
View raw message