[jira] [Commented] (GERONIMO-4576) Make persistence exceptions more visible to client

2012-12-24 Thread Geoff Callender (JIRA)

[ 
https://issues.apache.org/jira/browse/GERONIMO-4576?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13539252#comment-13539252
 ] 

Geoff Callender commented on GERONIMO-4576:
---

Well this is sad. Nearly 5 years on since the problem began with GERONIMO-3907 
and still I have to use a ridiculous workaround I described 4 years ago in 
https://issues.apache.org/jira/browse/OPENEJB-782 - inside the transaction I 
manually flush in a try-catch block and convert the exception to one of my own.

 Make persistence exceptions more visible to client
 --

 Key: GERONIMO-4576
 URL: https://issues.apache.org/jira/browse/GERONIMO-4576
 Project: Geronimo
  Issue Type: Improvement
  Security Level: public(Regular issues) 
  Components: persistence
Affects Versions: 2.2
 Environment: Linux, Windows
Reporter: Joe Bohn
Priority: Minor
 Fix For: Wish List


 See http://issues.apache.org/jira/browse/GERONIMO-3907  for details of the 
 original problem.   That core problem was resolved.  However, upon resolution 
 it was mentioned that it would be beneficial to report more specific failure 
 information back to the client.  From GERONIMO-3907:
 Ralf Baumhof - 06/May/08 06:17 AM
 Today if have tested the new Geronimo release 2.1.1 (published on 
 28.04.2008). The problem is now fixed. If the server gets an error on trying 
 a commit, this error is now thrown to the web bean.
 Exception text:
 javax.ejb.EJBTransactionRolledbackException: Transaction was rolled back, 
 presumably because setRollbackOnly was called during a synchronization: 
 Unable to commit: transaction marked for rollback Root Cause: 
 javax.transaction.TransactionRolledbackException : Transaction was rolled 
 back, presumably because setRollbackOnly was called during a synchronization: 
 Unable to commit: transaction marked for rollback
 Unfortunately there is no proper root cause attached to the exception. So the 
 cause can only be seen in the server console, but can not be reported to the 
 user. It would be very nice if you could change this in a later release.
 Thanks for your help.
 Vincent MATHON - 06/Nov/08 02:03 AM
 I agree that exceptions on the server side should not be thrown to the client 
 side since such exceptions types might not be known by the client. However, 
 for unit testing purpose, it is useful to attach the root cause to the 
 RollBackException. I have modified a few lines in 
 org.apache.geronimo.transaction.manager.TransactionImpl.java to attach the 
 root cause in case of RollBackException and it works for my unit testing 
 purpose (I have not enough background on the java transaction architecture 
 topic to submit a patch for production). It would be great to define a 
 configuration parameter that permits to provide the root cause to the client 
 and keep the current behaviour that does not by default.
 Geoff Callender - 22/Dec/08 03:36 AM
 It's useful for more than unit testing - it's essential to be able to inform 
 the client what's wrong with the request. I've added some examples of this to 
 https://issues.apache.org/jira/browse/OPENEJB-782 .

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira


[jira] Commented: (GERONIMO-3907) Persistence Exception is not visible/lost for client.

2008-12-22 Thread Geoff Callender (JIRA)

[ 
https://issues.apache.org/jira/browse/GERONIMO-3907?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=12658512#action_12658512
 ] 

Geoff Callender commented on GERONIMO-3907:
---

It's useful for more than unit testing - it's essential to be able to inform 
the client what's wrong with the request.  I've added some examples of this to 
https://issues.apache.org/jira/browse/OPENEJB-782 .

 Persistence Exception is not visible/lost for client. 
 --

 Key: GERONIMO-3907
 URL: https://issues.apache.org/jira/browse/GERONIMO-3907
 Project: Geronimo
  Issue Type: Bug
  Security Level: public(Regular issues) 
  Components: persistence
Affects Versions: 2.0.2, 2.1
 Environment: Linux, Windows
Reporter: Ralf Baumhof
Assignee: David Jencks
Priority: Blocker
   Original Estimate: 0.08h
  Remaining Estimate: 0.08h

 I am trying an insert on a table. The Entity class is wrong annotated, one 
 column was renamed in the table. Then the following situation occurs.  
 The call to persist(entity) is successfully, no exception is thrown. On 
 leaving the ejb container and returning to tomact a commit is performed (it's 
 a managed datasource, so container performs commit). This leads to the insert 
 on database. This insert fails, a rollback is performed. On return to the JSF 
 bean no exception can be seen by the bean. In the same class i have got a 
 query method. If i replace the call to persist with the call to the query 
 method everything works ok. The exception is thrown and is visible at the 
 client site. 
 This is the geronimo console output. The last line comes from the JSB bean 
 which reports a successful insert.
 11:58:04,390 WARN  [Transaction] Unexpected exception from beforeCompletion; 
 transaction will roll back
 openjpa-1.0.1-r420667:592145 fatal general error 
 org.apache.openjpa.persistence.PersistenceException: The transaction has been 
 rolled back.  See the nested exceptions for details on the errors that 
 occurred.
 at 
 org.apache.openjpa.kernel.BrokerImpl.newFlushException(BrokerImpl.java:2107)
 at org.apache.openjpa.kernel.BrokerImpl.flush(BrokerImpl.java:1954)
 at 
 org.apache.openjpa.kernel.BrokerImpl.flushSafe(BrokerImpl.java:1852)
 at 
 org.apache.openjpa.kernel.BrokerImpl.beforeCompletion(BrokerImpl.java:1770)
 at 
 org.apache.geronimo.transaction.manager.TransactionImpl.beforeCompletion(TransactionImpl.java:514)
 at 
 org.apache.geronimo.transaction.manager.TransactionImpl.beforeCompletion(TransactionImpl.java:499)
 at 
 org.apache.geronimo.transaction.manager.TransactionImpl.beforePrepare(TransactionImpl.java:400)
 at 
 org.apache.geronimo.transaction.manager.TransactionImpl.commit(TransactionImpl.java:257)
 at 
 org.apache.geronimo.transaction.manager.TransactionManagerImpl.commit(TransactionManagerImpl.java:245)
 at 
 org.apache.openejb.core.transaction.TransactionPolicy.commitTransaction(TransactionPolicy.java:141)
 at 
 org.apache.openejb.core.transaction.TxRequired.afterInvoke(TxRequired.java:75)
 at 
 org.apache.openejb.core.stateless.StatelessContainer._invoke(StatelessContainer.java:233)
 at 
 org.apache.openejb.core.stateless.StatelessContainer._invoke(StatelessContainer.java:188)
 at 
 org.apache.openejb.core.stateless.StatelessContainer.invoke(StatelessContainer.java:165)
 at 
 org.apache.openejb.core.ivm.EjbObjectProxyHandler.businessMethod(EjbObjectProxyHandler.java:217)
 at 
 org.apache.openejb.core.ivm.EjbObjectProxyHandler._invoke(EjbObjectProxyHandler.java:77)
 at 
 org.apache.openejb.core.ivm.BaseEjbProxyHandler.invoke(BaseEjbProxyHandler.java:321)
 at 
 org.apache.openejb.util.proxy.Jdk13InvocationHandler.invoke(Jdk13InvocationHandler.java:49)
 at $Proxy75.anlegenBenutzer(Unknown Source)
 at 
 de.nrw.hagen.ggrz.benutzer.controler.BenutzerControler.anlegenBenutzer(BenutzerControler.java:44)
 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.el.parser.AstValue.invoke(AstValue.java:131)
 at 
 org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:276)
 at 
 org.apache.jasper.el.JspMethodExpression.invoke(JspMethodExpression.java:68)
 at 
 javax.faces.component._MethodExpressionToMethodBinding.invoke(_MethodExpressionToMethodBinding.java:75)
 at 
 org.apache.myfaces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:54)