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

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.



Back to the top