Skip to main content

[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
>


Back to the top