[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
Re: [eclipselink-users] Non transactional sequenced ID generationcauses unique constraint violation
|
I'm actually em.flush()ing after each em.persist();
Is this thread-safe that each thread call the following code to obtain an em?
return Persistence.createEntityManagerFactory(persistenceUnit).createEntityManager();
Mohsen.
On Wed, Oct 22, 2008 at 6:11 PM, James Sutherland <jamesssss@xxxxxxxxx> wrote:
>
> Could you please include the complete code of what you are doing.
>
> >From the SQL log and stack you are not just doing a query, then a persist,
> the flush is being triggered from a query executed after the persist (this
> should still work). You could set the flushMode of the entity manager to
> COMMIT to test if the issue occurs because of the flush.
>
> Are you concurrently using the same entity manager? You cannot concurrently
> use the same entity manager, each thread should have its own entity
> manager/transaction.
>
>
>
> Mohsen Saboorian wrote:
>>
>> INCREMENT BY and allocationSize are the same.
>>
>> James, I used the following code to acquire EM in different threads:
>> em = Persistence.createEntityManagerFactory("ema").createEntityManager();
>>
>> after that a piece of code like this is executed:
>> Expertize expertize = new Expertize();
>> expertize.setXyz(...);
>> tx.begin();
>> em.persist(expertize);
>> tx.commit();
>>
>> Now with a different testing scenario (1. find all Expertizes, 2. Save
>> a new expertize) using about 40 concurrent threads I get the following
>> exception.
>>
>> Just to add that my search code (SELECT *) is not executed inside
>> transaction. May it be the cause of this error?
>>
>> Thanks,
>> Mohsen.
>>
>> [ITO] INFO (EmaSessionListener.java:17) Initializing user configurations.
>> [EL Fine]: 2008.10.21
>> 18:28:00.606--ServerSession(15758165)--Connection(7065437)--Thread(Thread[http-8080-Processor25,5,main])--SELECT
>> COUNT(XPT_ID) FROM TB_EXPERTIZE
>> [EL Fine]: 2008.10.21
>> 18:28:00.652--ServerSession(15758165)--Connection(7722588)--Thread(Thread[http-8080-Processor24,5,main])--SELECT
>> EMA_ID_SEQ.NEXTVAL FROM DUAL
>> [EL Fine]: 2008.10.21
>> 18:28:00.668--ServerSession(15758165)--Connection(3104218)--Thread(Thread[http-8080-Processor24,5,main])--SELECT
>> COUNT(XPT_ID) FROM TB_EXPERTIZE
>> [EL Fine]: 2008.10.21
>> 18:28:00.668--ServerSession(15758165)--Connection(17294524)--Thread(Thread[http-8080-Processor24,5,main])--SELECT
>> XPT_ID, XPT_CODE, XPT_WAGE, XPT_PROFICIENCY, XPT_LAST_UPDATE,
>> XPT_MISSION_WAGE FROM TB_EXPERTIZE
>> [ITO] ERROR (DispatchAction.java:154) exception invoking Actions execute
>> method
>> java.lang.reflect.InvocationTargetException
>> 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.apache.struts.chain.commands.servlet.ExecuteAction.execute(ExecuteAction.java:58)
>> at
>> org.apache.struts.chain.commands.AbstractExecuteAction.execute(AbstractExecuteAction.java:67)
>> at
>> org.apache.struts.chain.commands.ActionCommandBase.execute(ActionCommandBase.java:51)
>> at org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
>> at
>> org.apache.commons.chain.generic.LookupCommand.execute(LookupCommand.java:304)
>> at org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
>> at
>> org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:283)
>> at
>> org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
>> at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:462)
>> at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
>> at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
>> at
>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
>> at
>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
>> at
>> org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:691)
>> at
>> org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:469)
>> at
>> org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:403)
>> at
>> org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:301)
>> at
>> org.apache.struts.chain.commands.servlet.PerformForward.handleAsForward(PerformForward.java:113)
>> at
>> org.apache.struts.chain.commands.servlet.PerformForward.perform(PerformForward.java:96)
>> at
>> org.apache.struts.chain.commands.AbstractPerformForward.execute(AbstractPerformForward.java:54)
>> at
>> org.apache.struts.chain.commands.ActionCommandBase.execute(ActionCommandBase.java:51)
>> at org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
>> at
>> org.apache.commons.chain.generic.LookupCommand.execute(LookupCommand.java:304)
>> at org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
>> at
>> org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:283)
>> at
>> org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
>> at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:462)
>> at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
>> at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
>> at
>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
>> at
>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
>> at net.itorbit.ema.helper.LocaleFilter.doFilter(LocaleFilter.java:20)
>> at
>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
>> at
>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
>> at
>> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
>> at
>> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:174)
>> at
>> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
>> at
>> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
>> at
>> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
>> at
>> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:151)
>> at
>> org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:874)
>> at
>> org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
>> at
>> org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
>> at
>> org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
>> at
>> org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689)
>> at java.lang.Thread.run(Thread.java:595)
>> Caused by: javax.persistence.PersistenceException: Exception
>> [EclipseLink-7197] (Eclipse Persistence Services - 1.1 (Build
>> SNAPSHOT-20080918)):
>> org.eclipse.persistence.exceptions.ValidationException
>> Exception Description: Null primary key encountered in unit of work
>> clone [Expertize (8776)].
>> at
>> org.eclipse.persistence.internal.jpa.EntityManagerImpl.flush(EntityManagerImpl.java:391)
>> at
>> org.eclipse.persistence.internal.jpa.EJBQueryImpl.performPreQueryFlush(EJBQueryImpl.java:936)
>> at
>> org.eclipse.persistence.internal.jpa.EJBQueryImpl.executeReadQuery(EJBQueryImpl.java:378)
>> at
>> org.eclipse.persistence.internal.jpa.EJBQueryImpl.getResultList(EJBQueryImpl.java:517)
>> at net.itorbit.ema.helper.QueryByExample.find(QueryByExample.java:57)
>> at net.itorbit.ema.helper.QueryByExample.find(QueryByExample.java:50)
>> at net.itorbit.ema.biz.BaseSession.findByExample(BaseSession.java:268)
>> at net.itorbit.ema.helper.SearchUtils.search(SearchUtils.java:77)
>> at net.itorbit.ema.helper.SearchUtils.search(SearchUtils.java:66)
>> at
>> net.itorbit.ema.action.ExpertizeAction.executeList(ExpertizeAction.java:69)
>> ... 51 more
>> Caused by: Exception [EclipseLink-7197] (Eclipse Persistence Services
>> - 1.1 (Build SNAPSHOT-20080918)):
>> org.eclipse.persistence.exceptions.ValidationException
>> Exception Description: Null primary key encountered in unit of work
>> clone [Expertize (8776)].
>> at
>> org.eclipse.persistence.exceptions.ValidationException.nullPrimaryKeyInUnitOfWorkClone(ValidationException.java:1305)
>> at
>> org.eclipse.persistence.descriptors.changetracking.DeferredChangeDetectionPolicy.calculateChanges(DeferredChangeDetectionPolicy.java:84)
>> at
>> org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.calculateChanges(UnitOfWorkImpl.java:568)
>> at
>> org.eclipse.persistence.internal.sessions.RepeatableWriteUnitOfWork.writeChanges(RepeatableWriteUnitOfWork.java:290)
>> at
>> org.eclipse.persistence.internal.jpa.EntityManagerImpl.flush(EntityManagerImpl.java:388)
>> ... 60 more
>> [ITO] WARN (AbstractExceptionHandler.java:95) Unhandled exception
>> javax.persistence.PersistenceException: Exception [EclipseLink-7197]
>> (Eclipse Persistence Services - 1.1 (Build SNAPSHOT-20080918)):
>> org.eclipse.persistence.exceptions.ValidationException
>> Exception Description: Null primary key encountered in unit of work
>> clone [Expertize (8776)].
>> at
>> org.eclipse.persistence.internal.jpa.EntityManagerImpl.flush(EntityManagerImpl.java:391)
>> at
>> org.eclipse.persistence.internal.jpa.EJBQueryImpl.performPreQueryFlush(EJBQueryImpl.java:936)
>> at
>> org.eclipse.persistence.internal.jpa.EJBQueryImpl.executeReadQuery(EJBQueryImpl.java:378)
>> at
>> org.eclipse.persistence.internal.jpa.EJBQueryImpl.getResultList(EJBQueryImpl.java:517)
>> at net.itorbit.ema.helper.QueryByExample.find(QueryByExample.java:57)
>> at net.itorbit.ema.helper.QueryByExample.find(QueryByExample.java:50)
>> at net.itorbit.ema.biz.BaseSession.findByExample(BaseSession.java:268)
>> at net.itorbit.ema.helper.SearchUtils.search(SearchUtils.java:77)
>> at net.itorbit.ema.helper.SearchUtils.search(SearchUtils.java:66)
>> at
>> net.itorbit.ema.action.ExpertizeAction.executeList(ExpertizeAction.java:69)
>> 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.apache.struts.chain.commands.servlet.ExecuteAction.execute(ExecuteAction.java:58)
>> at
>> org.apache.struts.chain.commands.AbstractExecuteAction.execute(AbstractExecuteAction.java:67)
>> at
>> org.apache.struts.chain.commands.ActionCommandBase.execute(ActionCommandBase.java:51)
>> at org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
>> at
>> org.apache.commons.chain.generic.LookupCommand.execute(LookupCommand.java:304)
>> at org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
>> at
>> org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:283)
>> at
>> org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
>> at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:462)
>> at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
>> at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
>> at
>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
>> at
>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
>> at
>> org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:691)
>> at
>> org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:469)
>> at
>> org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:403)
>> at
>> org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:301)
>> at
>> org.apache.struts.chain.commands.servlet.PerformForward.handleAsForward(PerformForward.java:113)
>> at
>> org.apache.struts.chain.commands.servlet.PerformForward.perform(PerformForward.java:96)
>> at
>> org.apache.struts.chain.commands.AbstractPerformForward.execute(AbstractPerformForward.java:54)
>> at
>> org.apache.struts.chain.commands.ActionCommandBase.execute(ActionCommandBase.java:51)
>> at org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
>> at
>> org.apache.commons.chain.generic.LookupCommand.execute(LookupCommand.java:304)
>> at org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
>> at org.apache.struts.chain.ComposableRequestProcessor.process
>>
>>
>
>
> -----
> ---
> http://wiki.eclipse.org/User:James.sutherland.oracle.com James Sutherland
> http://www.eclipse.org/eclipselink/
> EclipseLink , http://www.oracle.com/technology/products/ias/toplink/
> TopLink
> Wiki: http://wiki.eclipse.org/EclipseLink EclipseLink ,
> http://wiki.oracle.com/page/TopLink TopLink
> Forums: http://forums.oracle.com/forums/forum.jspa?forumID=48 TopLink ,
> http://www.nabble.com/EclipseLink-f26430.html EclipseLink
> Book: http://en.wikibooks.org/wiki/Java_Persistence Java Persistence
> --
> View this message in context: http://www.nabble.com/Non-transactional-sequenced-ID-generation-causes-unique-constraint-violation-tp20054596p20112156.html
> Sent from the EclipseLink - Users mailing list archive at Nabble.com.
>
> _______________________________________________
> eclipselink-users mailing list
> eclipselink-users@xxxxxxxxxxx
> https://dev.eclipse.org/mailman/listinfo/eclipselink-users
>