From dev-return-6943-apmail-openjpa-dev-archive=openjpa.apache.org@openjpa.apache.org Thu Dec 06 20:50:08 2007 Return-Path: Delivered-To: apmail-openjpa-dev-archive@www.apache.org Received: (qmail 63328 invoked from network); 6 Dec 2007 20:50:08 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 6 Dec 2007 20:50:08 -0000 Received: (qmail 83975 invoked by uid 500); 6 Dec 2007 20:49:56 -0000 Delivered-To: apmail-openjpa-dev-archive@openjpa.apache.org Received: (qmail 83943 invoked by uid 500); 6 Dec 2007 20:49:56 -0000 Mailing-List: contact dev-help@openjpa.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@openjpa.apache.org Delivered-To: mailing list dev@openjpa.apache.org Received: (qmail 83934 invoked by uid 99); 6 Dec 2007 20:49:56 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 06 Dec 2007 12:49:56 -0800 X-ASF-Spam-Status: No, hits=-100.0 required=10.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO brutus.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 06 Dec 2007 20:50:04 +0000 Received: from brutus (localhost [127.0.0.1]) by brutus.apache.org (Postfix) with ESMTP id 0A90871424B for ; Thu, 6 Dec 2007 12:49:43 -0800 (PST) Message-ID: <8803301.1196974183038.JavaMail.jira@brutus> Date: Thu, 6 Dec 2007 12:49:43 -0800 (PST) From: "Pinaki Poddar (JIRA)" To: dev@openjpa.apache.org Subject: [jira] Updated: (OPENJPA-462) OptimisticException is thrown instead of OptimisticLockException In-Reply-To: <2240153.1196953002994.JavaMail.jira@brutus> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Virus-Checked: Checked by ClamAV on apache.org [ https://issues.apache.org/jira/browse/OPENJPA-462?page=3Dcom.atlassi= an.jira.plugin.system.issuetabpanels:all-tabpanel ] Pinaki Poddar updated OPENJPA-462: ---------------------------------- Attachment: jira462.patch.1.txt This patch narrows down StoreException by SQLException.getSQLState(). This narrowing down helps the upper layers to translate the exception to mo= re specific errors for the user. See the previous comment for further details. > OptimisticException is thrown instead of OptimisticLockException > ---------------------------------------------------------------- > > Key: OPENJPA-462 > URL: https://issues.apache.org/jira/browse/OPENJPA-462 > Project: OpenJPA > Issue Type: Bug > Affects Versions: 0.9.7 > Environment: BEA WebLogic Server 10 > Reporter: Ajay Aggarwal > Attachments: jira462.patch.1.txt > > > In my application, i wanted to catch "javax.persistence.OptimisticLockExc= eption" and take appropriate action. However I am seeing that instead "org.= apache.openjpa.util.OptimisticException" is being thrown. I don't want my c= ode to become dependent on OpenJPA and would like to see OptimisticLockExce= ption thrown. > While discussing in the OpenJPA forums, Patrick suggested that I create a= JIRA issue for this since its a bug. > You can see the discussion in the forum under title "OptimisticException = question" few days ago. > Below is the stack trace from my application. > org.apache.openjpa.util.OptimisticException: Op= timistic locking errors were detected when flushing to the data store. The= following objects may have been concurrently modified in another transacti= on: [com.covergence.soa.covapi.userpolicy.User-com.covergence.soa.covapi.us= erpolicy.User-1]],numRepliesOwedMe=3D0,numRepliesOwedOthers=3D0,seconds sin= ce begin=3D2,seconds left=3D30,SCInfo[ajayProduction+AdminServer]=3D(state= =3Drolledback),properties=3D({weblogic.transaction.name=3D[EJB com.covergen= ce.soa.covapi.sesscfg.SessionConfigBean.getSessionConfig(com.covergence.soa= .utils.SerJavaSipMessageType)]}),OwnerTransactionManager=3DServerTM[ServerC= oordinatorDescriptor=3D(CoordinatorURL=3DAdminServer+172.30.0.202:7001+ajay= Production+t3+admin+7001+,XAResources=3D{WLStore_ajayProduction__WLS_AdminS= erver},NonXAResources=3D{})],CoordinatorURL=3DAdminServer+172.30.0.202:7001= +ajayProduction+t3+admin+7001+): weblogic.transaction.RollbackException: Op= timistic locking errors were detected when flushing to the data store. The= following objects may have been concurrently modified in another transacti= on: [com.covergence.soa.covapi.userpolicy.User-com.covergence.soa.covapi.us= erpolicy.User-1] > at weblogic.transaction.internal.TransactionImpl.throwRollbackExc= eption(TransactionImpl.java:1818) > at weblogic.transaction.internal.ServerTransactionImpl.internalCo= mmit(ServerTransactionImpl.java:333) > at weblogic.transaction.internal.ServerTransactionImpl.commit(Ser= verTransactionImpl.java:227) > at weblogic.ejb.container.internal.BaseRemoteObject.postInvoke1(B= aseRemoteObject.java:606) > at weblogic.ejb.container.internal.StatelessRemoteObject.postInvo= ke1(StatelessRemoteObject.java:57) > at weblogic.ejb.container.internal.BaseRemoteObject.postInvokeTxR= etry(BaseRemoteObject.java:426) > at com.covergence.soa.covapi.sesscfg.SessionConfigBean_4w7egw_Ses= sionConfigImpl.getSessionConfig(SessionConfigBean_4w7egw_SessionConfigImpl.= java:76) > at jrockit.reflect.VirtualNativeMethodInvoker.invoke(Ljava.lang.O= bject;[Ljava.lang.Object;)Ljava.lang.Object;(Unknown Source) > at java.lang.reflect.Method.invoke(Ljava.lang.Object;[Ljava.lang.= Object;I)Ljava.lang.Object;(Unknown Source) > at weblogic.ejb.container.internal.RemoteBusinessIntfProxy.invoke= (RemoteBusinessIntfProxy.java:63) > at $Proxy67.getSessionConfig(Lcom.covergence.soa.utils.SerJavaSip= MessageType;)Lcom.covergence.ws.callouts.SessionConfigType;(Unknown Source) > at com.covergence.soa.ws.server.CallOutsImpl.getSessionConfigType= (CallOutsImpl.java:46) > at com.covergence.soa.ws.server.CallOutsImplBase.getSessionPolicy= (CallOutsImplBase.java:238) > at jrockit.reflect.VirtualNativeMethodInvoker.invoke(Ljava.lang.O= bject;[Ljava.lang.Object;)Ljava.lang.Object;(Unknown Source) > at java.lang.reflect.Method.invoke(Ljava.lang.Object;[Ljava.lang.= Object;I)Ljava.lang.Object;(Unknown Source) > at weblogic.wsee.jaxws.WLSInvoker.invoke(WLSInvoker.java:50) > at weblogic.wsee.jaxws.WLSInvoker.invoke(WLSInvoker.java:42) > at com.sun.xml.ws.server.sei.EndpointMethodHandler.invoke(Endpoin= tMethodHandler.java:247) > at com.sun.xml.ws.server.sei.SEIInvokerPipe.process(SEIInvokerPip= e.java:97) > at weblogic.wsee.jaxws.MonitoringPipe.process(MonitoringPipe.java= :98) > at com.sun.xml.ws.protocol.soap.ServerMUPipe.process(ServerMUPipe= .java:62) > at com.sun.xml.ws.server.WSEndpointImpl$1.process(WSEndpointImpl.= java:139) > at com.sun.xml.ws.transport.http.HttpAdapter$HttpToolkit.handle(H= ttpAdapter.java:153) > at com.sun.xml.ws.transport.http.HttpAdapter.handle(HttpAdapter.j= ava:235) > at com.sun.xml.ws.transport.http.servlet.ServletAdapter.handle(Se= rvletAdapter.java:97) > at weblogic.wsee.jaxws.HttpServletAdapter.post(HttpServletAdapter= .java:36) > .> > javax.ejb.EJBException: nested exception is: <2|false|0.9.7> org.apache.o= penjpa.util.OptimisticException: Optimistic locking errors were detected wh= en flushing > to the data store. The following objects may have been concurrently modi= fied in another transaction: [com.covergence.soa.covapi.userpolicy.User-com= .covergence. > soa.covapi.userpolicy.User-1]<2|false|0.9.7> org.apache.openjpa.util.Opti= misticException: Optimistic locking errors were detected when flushing to t= he data store. The following objects may have been concurrently modified i= n another transaction: [com.covergence.soa.covapi.userpolicy.User-com.cover= gence.soa.covapi.userpolicy.User-1] > at org.apache.openjpa.kernel.BrokerImpl.newFlushException(BrokerI= mpl.java:2120) > at org.apache.openjpa.kernel.BrokerImpl.flush(BrokerImpl.java:197= 0) > at org.apache.openjpa.kernel.BrokerImpl.flushSafe(BrokerImpl.java= :1868) > at org.apache.openjpa.kernel.BrokerImpl.beforeCompletion(BrokerIm= pl.java:1786) > at weblogic.transaction.internal.ServerSCInfo.doBeforeCompletion(= ServerSCInfo.java:1212) > at weblogic.transaction.internal.ServerSCInfo.callBeforeCompletio= ns(ServerSCInfo.java:1190) > at weblogic.transaction.internal.ServerSCInfo.startPrePrepareAndC= hain(ServerSCInfo.java:118) > at weblogic.transaction.internal.ServerTransactionImpl.localPrePr= epareAndChain(ServerTransactionImpl.java:1299) > at weblogic.transaction.internal.ServerTransactionImpl.globalPreP= repare(ServerTransactionImpl.java:2111) > at weblogic.transaction.internal.ServerTransactionImpl.internalCo= mmit(ServerTransactionImpl.java:260) > at weblogic.transaction.internal.ServerTransactionImpl.commit(Ser= verTransactionImpl.java:227) > at weblogic.ejb.container.internal.BaseRemoteObject.postInvoke1(B= aseRemoteObject.java:606) > at weblogic.ejb.container.internal.StatelessRemoteObject.postInvo= ke1(StatelessRemoteObject.java:57) > at weblogic.ejb.container.internal.BaseRemoteObject.postInvokeTxR= etry(BaseRemoteObject.java:426) > at com.covergence.soa.covapi.sesscfg.SessionConfigBean_4w7egw_Ses= sionConfigImpl.getSessionConfig(SessionConfigBean_4w7egw_SessionConfigImpl.= java:76) > at jrockit.reflect.VirtualNativeMethodInvoker.invoke(Ljava.lang.O= bject;[Ljava.lang.Object;)Ljava.lang.Object;(Unknown Source) > at java.lang.reflect.Method.invoke(Ljava.lang.Object;[Ljava.lang.= Object;I)Ljava.lang.Object;(Unknown Source) > at weblogic.ejb.container.internal.RemoteBusinessIntfProxy.invoke= (RemoteBusinessIntfProxy.java:63) > at $Proxy67.getSessionConfig(Lcom.covergence.soa.utils.SerJavaSip= MessageType;)Lcom.covergence.ws.callouts.SessionConfigType;(Unknown Source) > at com.covergence.soa.ws.server.CallOutsImpl.getSessionConfigType= (CallOutsImpl.java:46) > Caused by: <2|false|0.9.7> org.apache.openjpa.util.OptimisticException: A= n optimistic lock violation was detected when flushing object instance "com= .covergence.soa.covapi.userpolicy.User-com.covergence.soa.covapi.userpolicy= .User-1" to the data store. This indicates that the object was concurrentl= y modified in anothertransaction. > FailedObject: com.covergence.soa.covapi.userpolicy.User-com.covergence.so= a.covapi.userpolicy.User-1 > at kodo.jdbc.kernel.BatchingPreparedStatementManager.checkUpdate(= BatchingPreparedStatementManager.java:354) > at kodo.jdbc.kernel.BatchingPreparedStatementManager.flushInterna= l(BatchingPreparedStatementManager.java:208) > at kodo.jdbc.kernel.BatchingPreparedStatementManager.flush(Batchi= ngPreparedStatementManager.java:188) > at kodo.jdbc.kernel.ConstraintUpdateManager.flush(ConstraintUpdat= eManager.java:90) > at org.apache.openjpa.jdbc.kernel.AbstractUpdateManager.flush(Abs= tractUpdateManager.java:86) > at org.apache.openjpa.jdbc.kernel.AbstractUpdateManager.flush(Abs= tractUpdateManager.java:69) > at org.apache.openjpa.jdbc.kernel.JDBCStoreManager.flush(JDBCStor= eManager.java:511) > at org.apache.openjpa.kernel.DelegatingStoreManager.flush(Delegat= ingStoreManager.java:127) > at org.apache.openjpa.datacache.DataCacheStoreManager.flush(DataC= acheStoreManager.java:506) > at org.apache.openjpa.kernel.DelegatingStoreManager.flush(Delegat= ingStoreManager.java:127) > at org.apache.openjpa.kernel.BrokerImpl.flush(BrokerImpl.java:197= 0) > at org.apache.openjpa.kernel.BrokerImpl.flushSafe(BrokerImpl.java= :1868) > at org.apache.openjpa.kernel.BrokerImpl.beforeCompletion(BrokerIm= pl.java:1786) > at weblogic.transaction.internal.ServerSCInfo.doBeforeCompletion(= ServerSCInfo.java:1212) > at weblogic.transaction.internal.ServerSCInfo.callBeforeCompletio= ns(ServerSCInfo.java:1190) > at weblogic.transaction.internal.ServerSCInfo.startPrePrepareAndC= hain(ServerSCInfo.java:118) > at weblogic.transaction.internal.ServerTransactionImpl.localPrePr= epareAndChain(ServerTransactionImpl.java:1299) > at weblogic.transaction.internal.ServerTransactionImpl.globalPreP= repare(ServerTransactionImpl.java:2111) > at weblogic.transaction.internal.ServerTransactionImpl.internalCo= mmit(ServerTransactionImpl.java:260) > at weblogic.transaction.internal.ServerTransactionImpl.commit(Ser= verTransactionImpl.java:227) > at weblogic.ejb.container.internal.BaseRemoteObject.postInvoke1(B= aseRemoteObject.java:606) > at weblogic.ejb.container.internal.StatelessRemoteObject.postInvo= ke1(StatelessRemoteObject.java:57) > at weblogic.ejb.container.internal.BaseRemoteObject.postInvokeTxR= etry(BaseRemoteObject.java:426) > javax.ejb.EJBException: nested exception is: <2|false|0.9.7> org.apache.o= penjpa.util.OptimisticException: Optimistic locking errors were detected wh= en flushing to the data store. The following objects may have been concurr= ently modified in another transaction: [com.covergence.soa.covapi.userpolic= y.User-com.covergence.soa.covapi.userpolicy.User-1] > at weblogic.ejb.container.internal.RemoteBusinessIntfProxy.invoke= (RemoteBusinessIntfProxy.java:78) > at $Proxy67.getSessionConfig(Lcom.covergence.soa.utils.SerJavaSip= MessageType;)Lcom.covergence.ws.callouts.SessionConfigType;(Unknown Source) > at com.covergence.soa.ws.server.CallOutsImpl.getSessionConfigType= (CallOutsImpl.java:46) > at com.covergence.soa.ws.server.CallOutsImplBase.getSessionPolicy= (CallOutsImplBase.java:238) > at jrockit.reflect.VirtualNativeMethodInvoker.invoke(Ljava.lang.O= bject;[Ljava.lang.Object;)Ljava.lang.Object;(Unknown Source) > at java.lang.reflect.Method.invoke(Ljava.lang.Object;[Ljava.lang.= Object;I)Ljava.lang.Object;(Unknown Source) > at weblogic.wsee.jaxws.WLSInvoker.invoke(WLSInvoker.java:50) > at weblogic.wsee.jaxws.WLSInvoker.invoke(WLSInvoker.java:42) > at com.sun.xml.ws.server.sei.EndpointMethodHandler.invoke(Endpoin= tMethodHandler.java:247) > at com.sun.xml.ws.server.sei.SEIInvokerPipe.process(SEIInvokerPip= e.java:97) > at weblogic.wsee.jaxws.MonitoringPipe.process(MonitoringPipe.java= :98) > at com.sun.xml.ws.protocol.soap.ServerMUPipe.process(ServerMUPipe= .java:62) > at com.sun.xml.ws.server.WSEndpointImpl$1.process(WSEndpointImpl.= java:139) > at com.sun.xml.ws.transport.http.HttpAdapter$HttpToolkit.handle(H= ttpAdapter.java:153) > at com.sun.xml.ws.transport.http.HttpAdapter.handle(HttpAdapter.j= ava:235) > at com.sun.xml.ws.transport.http.servlet.ServletAdapter.handle(Se= rvletAdapter.java:97) > at weblogic.wsee.jaxws.HttpServletAdapter.post(HttpServletAdapter= .java:36) > at weblogic.wsee.jaxws.JAXWSServlet.doPost(JAXWSServlet.java:218) > at javax.servlet.http.HttpServlet.service(HttpServlet.java:727) > at javax.servlet.http.HttpServlet.service(HttpServlet.java:820) > at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAct= ion.run(StubSecurityHelper.java:226) > at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(Stu= bSecurityHelper.java:124) > at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubI= mpl.java:283) > at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubI= mpl.java:175) > at weblogic.servlet.internal.WebAppServletContext$ServletInvocati= onAction.run(WebAppServletContext.java:3370) > at weblogic.security.acl.internal.AuthenticatedSubject.doAs(Authe= nticatedSubject.java:321) > at weblogic.security.service.SecurityManager.runAs(Lweblogic.secu= rity.acl.internal.AuthenticatedSubject;Lweblogic.security.acl.internal.Auth= enticatedSubject;Ljava.security.PrivilegedAction;)Ljava.lang.Object;(Unknow= n Source) > at weblogic.servlet.internal.WebAppServletContext.securedExecute(= WebAppServletContext.java:2117) > at weblogic.servlet.internal.WebAppServletContext.execute(WebAppS= ervletContext.java:2023) --=20 This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.