emac / ttdong

Automatically exported from code.google.com/p/ttdong
0 stars 0 forks source link

PersistenceException thrown from EntityCRUDDao breaks down site #101

Open GoogleCodeExporter opened 9 years ago

GoogleCodeExporter commented 9 years ago
After the site is up for days, it becomes broken due to PersistenceException 
thrown from EntityCRUDDao.

Error stack:

2013-1-2 13:44:34 org.zkoss.zk.ui.impl.UiEngineImpl handleError:1279
严重: >><openjpa-2.1.1-r422266:1148538 fatal general error> 
org.apache.openjpa.persistence.PersistenceException: Multiple concurrent 
threads attempted to access a single broker. By default brokers are not thread 
safe; if you require and/or intend a broker to be accessed by more than one 
thread, set the openjpa.Multithreaded property to true to override the default 
behavior.
>>    at org.apache.openjpa.kernel.BrokerImpl.endOperation(BrokerImpl.java:1940)
>>    at org.apache.openjpa.kernel.BrokerImpl.isActive(BrokerImpl.java:1888)
>>    at 
org.apache.openjpa.kernel.DelegatingBroker.isActive(DelegatingBroker.java:476)
>>    at 
org.apache.openjpa.persistence.EntityManagerImpl.isActive(EntityManagerImpl.java
:676)
>>    at 
org.apache.openjpa.persistence.PersistenceExceptions$2.translate(PersistenceExce
ptions.java:76)
>>    at 
org.apache.openjpa.kernel.DelegatingBroker.translate(DelegatingBroker.java:126)
>>    at 
org.apache.openjpa.kernel.DelegatingBroker.newQuery(DelegatingBroker.java:1283)
>>    at 
org.apache.openjpa.persistence.EntityManagerImpl.createQuery(EntityManagerImpl.j
ava:991)
>>    at 
org.apache.openjpa.persistence.EntityManagerImpl.createQuery(EntityManagerImpl.j
ava:978)
>>    at sun.reflect.GeneratedMethodAccessor48.invoke(Unknown Source)
>>    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
>>    at java.lang.reflect.Method.invoke(Unknown Source)
>>    at 
org.springframework.orm.jpa.ExtendedEntityManagerCreator$ExtendedEntityManagerIn
vocationHandler.invoke(ExtendedEntityManagerCreator.java:365)
>>    at $Proxy31.createQuery(Unknown Source)
>>    at 
com.ehealth.cms.repositories.EntityCRUDDao.query(EntityCRUDDao.java:233)
>>    at 
com.ehealth.cms.repositories.EntityCRUDDao.query(EntityCRUDDao.java:219)
>>    at com.ehealth.cms.calendar.CMSCalendarModel.get(CMSCalendarModel.java:94)
>>    at org.zkoss.calendar.Calendars.onInitRender(Calendars.java:739)
>>    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
>>    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
>>    at java.lang.reflect.Method.invoke(Unknown Source)
>>    at org.zkoss.zk.ui.impl.EventProcessor.process0(EventProcessor.java:205)
>>    at org.zkoss.zk.ui.impl.EventProcessor.process(EventProcessor.java:138)
>>    at org.zkoss.zk.ui.impl.UiEngineImpl.processEvent(UiEngineImpl.java:1635)
>>    at org.zkoss.zk.ui.impl.UiEngineImpl.process(UiEngineImpl.java:1419)
>>    at org.zkoss.zk.ui.impl.UiEngineImpl.execNewPage0(UiEngineImpl.java:462)
>>    at org.zkoss.zk.ui.impl.UiEngineImpl.execNewPage(UiEngineImpl.java:309)
>>    at 
org.zkoss.zk.ui.http.DHtmlLayoutServlet.process(DHtmlLayoutServlet.java:220)
>>    at 
org.zkoss.zk.ui.http.DHtmlLayoutServlet.doGet(DHtmlLayoutServlet.java:140)
>>    at javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
>>    at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
>>    at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilt
erChain.java:305)
>>    at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.
java:210)
>>    at 
com.ehealth.eyedpt.mvc.filters.PostSpringSecurityFilter.doFilter(PostSpringSecur
ityFilter.java:47)
>>    at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilt
erChain.java:243)
>>    at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.
java:210)
>>    at 
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(Fi
lterChainProxy.java:368)
>>    at 
org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invo
ke(FilterSecurityInterceptor.java:109)
>>    at 
org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFi
lter(FilterSecurityInterceptor.java:83)
>>    at 
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(Fi
lterChainProxy.java:380)
>>    at 
org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(Exce
ptionTranslationFilter.java:97)
>>    at 
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(Fi
lterChainProxy.java:380)
>>    at 
org.springframework.security.web.session.SessionManagementFilter.doFilter(Sessio
nManagementFilter.java:100)
>>    at 
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(Fi
lterChainProxy.java:380)
>>    at 
org.springframework.security.web.authentication.AnonymousAuthenticationFilter.do
Filter(AnonymousAuthenticationFilter.java:78)
>>    at 
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(Fi
lterChainProxy.java:380)
>>    at 
org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFil
ter.doFilter(SecurityContextHolderAwareRequestFilter.java:54)
>>    at 
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(Fi
lterChainProxy.java:380)
>>    at 
org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(R
equestCacheAwareFilter.java:35)
>>    at 
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(Fi
lterChainProxy.java:380)
>>    at 
org.springframework.security.web.authentication.AbstractAuthenticationProcessing
Filter.doFilter(AbstractAuthenticationProcessingFilter.java:187)
>>    at 
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(Fi
lterChainProxy.java:380)
>>    at 
org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(Log
outFilter.java:105)
>>    at 
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(Fi
lterChainProxy.java:380)
>>    at 
org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilt
er(SecurityContextPersistenceFilter.java:79)
>>    at 
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(Fi
lterChainProxy.java:380)
>>    at 
org.springframework.security.web.session.ConcurrentSessionFilter.doFilter(Concur
rentSessionFilter.java:109)
>>    at 
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(Fi
lterChainProxy.java:380)
>>    at 
org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java
:169)
>>    at 
org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFi
lterProxy.java:237)
>>    at 
org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterPr
oxy.java:167)
>>    at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilt
erChain.java:243)
>>    at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.
java:210)
>>    at 
org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(Characte
rEncodingFilter.java:88)
>>    at 
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilte
r.java:76)
>>    at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilt
erChain.java:243)
>>    at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.
java:210)
>>    at 
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:2
22)
>>    at 
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:1
23)
>>    at 
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.jav
a:472)
>>    at 
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
>>    at 
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
>>    at 
org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:929)
>>    at 
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118
)
>>    at 
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
>>    at 
org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor
.java:1002)
>>    at 
org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractPro
tocol.java:585)
>>    at 
org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
>>    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
>>    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
>>    at java.lang.Thread.run(Unknown Source)

Original issue reported on code.google.com by shen.bin...@gmail.com on 3 Jan 2013 at 1:05

GoogleCodeExporter commented 9 years ago
Another error is observed as well in page.rb,

325905813  eyedpt  TRACE  [http-bio-80-exec-107] openjpa.jdbc.SQL - <t 
24472531, conn 15750363> [0 ms] spent
NativeException: org.apache.openjpa.persistence.PersistenceException: Multiple 
concurrent threads attempted to access a single broker. By default brokers are 
not thread safe; if you require and/or intend a broker to be accessed by more 
than one thread, set the openjpa.Multithreaded property to true to override the 
default behavior.
              result at (erb):28
                eval at org/jruby/RubyKernel.java:1093
              result at file:/E:/opt/Tomcat 7.0/webapps/seeeye/WEB-INF/lib/jruby-complete-1.6.5.jar!/META-INF/jruby.home/lib/ruby/1.9/erb.rb:753
  show_home_bulletin at page.rb:97
                call at org/jruby/RubyMethod.java:121
           _execute_ at WEB-INF/ruby/lib/startup.rb:16

Original comment by shen.bin...@gmail.com on 3 Jan 2013 at 1:06

GoogleCodeExporter commented 9 years ago
As suggested in the error message, I set openjpa.Multithreaded property to true 
as a workaround. But this may slow down the site speed according to the OpenJPA 
manual.

>> excerpted from OpenJPA manual:

OpenJPA respects the openjpa.Multithreaded option in that it does not impose as 
much synchronization
overhead for applications that do not set this value to true. If your 
application is guaranteed
to only use single-threaded access to OpenJPA resources and persistent objects, 
leaving this option
as false will reduce synchronization overhead, and may result in a modest 
performance increase.

Original comment by shen.bin...@gmail.com on 3 Jan 2013 at 1:08

GoogleCodeExporter commented 9 years ago

Original comment by shen.bin...@gmail.com on 3 Jan 2013 at 1:11