[ 
https://issues.apache.org/jira/browse/OPENJPA-343?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12523992
 ] 

Patrick Linskey commented on OPENJPA-343:
-----------------------------------------

I'm generally against the log-and-throw pattern, whenever it's possible to 
avoid it. When it is necessary, I think that it's important that the log only 
happen at the trace level, so that we aren't unnecessarily repeating exception 
printouts.

This conversation seems to have diverged a bit from suggesting a log-and-throw, 
but I figured it was worth mentioning anyways.

> Do not call setRollbackOnly on inactive Transactions
> ----------------------------------------------------
>
>                 Key: OPENJPA-343
>                 URL: https://issues.apache.org/jira/browse/OPENJPA-343
>             Project: OpenJPA
>          Issue Type: Bug
>          Components: kernel
>    Affects Versions: 0.9.7, 1.0.0
>            Reporter: Kevin Sutter
>            Assignee: Kevin Sutter
>
> While in the middle of processing an afterCompletion invocation in 
> BrokerImpl, an unexpected RuntimeException (IndexOutOfBoundsException) 
> occurred within some underlying WebSphere code.  While we (OpenJPA) were 
> attempting to clean up after that exception, we attempted to call 
> setRollbackOnly on the current transaction.  But, since we were in the 
> process of completing the current transaction, it is invalid to be calling 
> setRollbackOnly and we ended up getting an IllegalStateException from the 
> WebSphere Transaction Manager.  Due this second exception, we ended up losing 
> track of the original exception and this became a difficult problem to 
> diagnose.
> This issue will be used to correct a couple of issues (at least):
> 1)  We should ensure that the transaction is active before calling
> setRollbackOnly().  When an exception happens during afterCompletion 
> processing, the Transaction can no longer accept setRollbackOnly 
> invocations.
> 2)  When an unexpected exception happens like this, we should log the
> exception before attempting to process the exception.  In this particular
> case, we lost the original exception when we ran into the 
> IllegalStateException
> from the Transaction service.  This forced us to re-run the scenario just to
> get a trace of the exception.
> 3)  Or, if we don't want to log the exception immediately, we need to 
> determine why we lost the first exception in the first place and ensure that 
> doesn't happen again.
> Kevin

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to