[
https://issues.apache.org/jira/browse/OPENJPA-324?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12521185
]
Chris Ward commented on OPENJPA-324:
------------------------------------
I forgot to include the stack trace:
13:13:10,129 ERROR [QIPImpl]
com.symcor.sis.tecp.qip.dao.exception.PersistenceException: Runtime Exception
encountered while querying Header_Record.
com.symcor.sis.tecp.qip.dao.exception.PersistenceException: Runtime Exception
encountered while querying Header_Record.
at
com.symcor.sis.tecp.qip.dao.HeaderDAOImpl.persistIfNotPresent(HeaderDAOImpl.java:45)
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
org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:281)
at
org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:187)
at
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:154)
at
org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:107)
at
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:176)
at
org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:210)
at $Proxy422.persistIfNotPresent(Unknown Source)
at
com.symcor.sis.tecp.qip.delegate.QIPFileItemDelegateImpl.save(QIPFileItemDelegateImpl.java:58)
at com.symcor.sis.tecp.qip.QIPImpl.save(QIPImpl.java:36)
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
com.sun.xml.ws.api.server.InstanceResolver$1.invoke(InstanceResolver.java:210)
at com.sun.xml.ws.server.InvokerTube$2.invoke(InvokerTube.java:132)
at
com.sun.xml.ws.server.sei.EndpointMethodHandler.invoke(EndpointMethodHandler.java:241)
at
com.sun.xml.ws.server.sei.SEIInvokerTube.processRequest(SEIInvokerTube.java:74)
at com.sun.xml.ws.api.pipe.Fiber.__doRun(Fiber.java:559)
at com.sun.xml.ws.api.pipe.Fiber._doRun(Fiber.java:518)
at com.sun.xml.ws.api.pipe.Fiber.doRun(Fiber.java:503)
at com.sun.xml.ws.api.pipe.Fiber.runSync(Fiber.java:400)
at
com.sun.xml.ws.server.WSEndpointImpl$2.process(WSEndpointImpl.java:226)
at
com.sun.xml.ws.transport.http.HttpAdapter$HttpToolkit.handle(HttpAdapter.java:375)
at
com.sun.xml.ws.transport.http.HttpAdapter.handle(HttpAdapter.java:175)
at
com.sun.xml.ws.transport.http.servlet.ServletAdapter.handle(ServletAdapter.java:134)
at
com.sun.xml.ws.transport.http.servlet.WSServletDelegate.doPost(WSServletDelegate.java:159)
at
com.sun.xml.ws.transport.http.servlet.WSServlet.doPost(WSServlet.java:49)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:615)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:688)
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.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
at
org.apache.geronimo.tomcat.valve.DefaultSubjectValve.invoke(DefaultSubjectValve.java:56)
at
org.apache.geronimo.tomcat.GeronimoStandardContext$SystemMethodValve.invoke(GeronimoStandardContext.java:342)
at
org.apache.geronimo.tomcat.valve.GeronimoBeforeAfterValve.invoke(GeronimoBeforeAfterValve.java:31)
at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
at
org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:541)
at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
at
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
at
org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:667)
at
org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
at
org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
at
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
at java.lang.Thread.run(Thread.java:595)
Caused by: org.springframework.dao.InvalidDataAccessApiUsageException: The type
"class com.symcor.sis.sisinternal.Header" has not been enhanced.; nest
ed exception is <4|true|0.9.6-incubating>
org.apache.openjpa.persistence.ArgumentException: The type "class
com.symcor.sis.sisinternal.Header" has not
been enhanced.
at
org.springframework.orm.jpa.EntityManagerFactoryUtils.convertJpaAccessExceptionIfPossible(EntityManagerFactoryUtils.java:190)
at
org.springframework.orm.jpa.DefaultJpaDialect.translateExceptionIfPossible(DefaultJpaDialect.java:113)
at
org.springframework.dao.support.DataAccessUtils.translateIfNecessary(DataAccessUtils.java:212)
at
org.springframework.orm.jpa.JpaAccessor.translateIfNecessary(JpaAccessor.java:152)
at org.springframework.orm.jpa.JpaTemplate.execute(JpaTemplate.java:196)
at
org.springframework.orm.jpa.JpaTemplate.executeFind(JpaTemplate.java:158)
at org.springframework.orm.jpa.JpaTemplate.find(JpaTemplate.java:305)
at
com.symcor.sis.tecp.qip.dao.HeaderDAOImpl.persistIfNotPresent(HeaderDAOImpl.java:42)
... 51 more
Caused by: <4|true|0.9.6-incubating>
org.apache.openjpa.persistence.ArgumentException: The type "class
com.symcor.sis.sisinternal.Header" has not been
enhanced.
at
org.apache.openjpa.meta.ClassMetaData.resolveMeta(ClassMetaData.java:1590)
at
org.apache.openjpa.meta.ClassMetaData.resolve(ClassMetaData.java:1564)
at
org.apache.openjpa.meta.MetaDataRepository.processBuffer(MetaDataRepository.java:654)
at
org.apache.openjpa.meta.MetaDataRepository.resolveMeta(MetaDataRepository.java:554)
at
org.apache.openjpa.meta.MetaDataRepository.resolve(MetaDataRepository.java:479)
at
org.apache.openjpa.meta.MetaDataRepository.getMetaData(MetaDataRepository.java:283)
at
org.apache.openjpa.meta.MetaDataRepository.resolveMeta(MetaDataRepository.java:519)
at
org.apache.openjpa.meta.MetaDataRepository.resolve(MetaDataRepository.java:479)
at
org.apache.openjpa.meta.MetaDataRepository.getMetaData(MetaDataRepository.java:283)
at
org.apache.openjpa.meta.MetaDataRepository.getMetaData(MetaDataRepository.java:338)
at org.apache.openjpa.kernel.QueryImpl.classForName(QueryImpl.java:1540)
at
org.apache.openjpa.kernel.ExpressionStoreQuery$1.classForName(ExpressionStoreQuery.java:104)
at
org.apache.openjpa.kernel.jpql.JPQLExpressionBuilder.getClassMetaData(JPQLExpressionBuilder.java:160)
at
org.apache.openjpa.kernel.jpql.JPQLExpressionBuilder.resolveClassMetaData(JPQLExpressionBuilder.java:131)
at
org.apache.openjpa.kernel.jpql.JPQLExpressionBuilder.getCandidateMetaData(JPQLExpressionBuilder.java:211)
at
org.apache.openjpa.kernel.jpql.JPQLExpressionBuilder.getCandidateMetaData(JPQLExpressionBuilder.java:181)
at
org.apache.openjpa.kernel.jpql.JPQLExpressionBuilder.getCandidateType(JPQLExpressionBuilder.java:174)
at
org.apache.openjpa.kernel.jpql.JPQLExpressionBuilder.access$500(JPQLExpressionBuilder.java:61)
at
org.apache.openjpa.kernel.jpql.JPQLExpressionBuilder$ParsedJPQL.populate(JPQLExpressionBuilder.java:1657)
at
org.apache.openjpa.kernel.jpql.JPQLParser.populate(JPQLParser.java:52)
at
org.apache.openjpa.kernel.ExpressionStoreQuery.populateFromCompilation(ExpressionStoreQuery.java:145)
at
org.apache.openjpa.kernel.QueryImpl.newCompilation(QueryImpl.java:642)
at
org.apache.openjpa.kernel.QueryImpl.compilationFromCache(QueryImpl.java:623)
at
org.apache.openjpa.kernel.QueryImpl.compileForCompilation(QueryImpl.java:589)
at
org.apache.openjpa.kernel.QueryImpl.compileForExecutor(QueryImpl.java:651)
at org.apache.openjpa.kernel.QueryImpl.getOperation(QueryImpl.java:1464)
at
org.apache.openjpa.kernel.DelegatingQuery.getOperation(DelegatingQuery.java:120)
at org.apache.openjpa.persistence.QueryImpl.execute(QueryImpl.java:202)
at
org.apache.openjpa.persistence.QueryImpl.getResultList(QueryImpl.java:251)
at
org.springframework.orm.jpa.JpaTemplate$9.doInJpa(JpaTemplate.java:313)
at org.springframework.orm.jpa.JpaTemplate.execute(JpaTemplate.java:191)
... 54 more
> The MetaDataRepository class is not thread safe. Initialization under heavy
> load on a multi CPU/Core systems throws exceptions.
> --------------------------------------------------------------------------------------------------------------------------------
>
> Key: OPENJPA-324
> URL: https://issues.apache.org/jira/browse/OPENJPA-324
> Project: OpenJPA
> Issue Type: Bug
> Components: kernel
> Affects Versions: 0.9.6, 0.9.7
> Environment: I have reproduced the problem in Windows and in Solaris.
> It only affects multi core/CPU systems. I haven't reproduced the problem on
> single core systems.
> I am using Spring 2.0.2 and OpenJPA 0.9.6 with an Oracle 10g database.
> Reporter: Chris Ward
> Attachments: MetaDataRepository.java
>
>
> OpenJPA's MetaDataRepository fails to load metadata for classess when
> multiple threads use the same EntityManagerFactory class to resolve the
> metadata. The MetaDataRepository implementation is not thread safe.The
> problem only occurrs on multi core or multi processor machines that can
> concurrently try to initialize meta data for classes.
> To reproduce the problem I have inserted a sleep statement within the code to
> help reproduce the problem consistently. I have commented out the sleep
> statement in my deployed version of the class.
> This bug is sort of related to issue 250. I have cleaned up all of the
> synchronization in the class. There should be less contention, however it
> could still be better if a ReentrantReadWriteLock was used. I noticed that
> someone had posted a new MetaDataRepository with a ReentrantReadWriteLock,
> but too seems to have the same issues.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.