[jbosscache-dev] JBoss Cache weakness handling heuristic transaction outcomes - [Fwd: [Fwd: New case comment notification. Case Number 00017677]]
Manik Surtani
manik at jboss.org
Thu Aug 23 12:51:58 EDT 2007
Ok, so here is the fix I propose.
Index: TxInterceptor.java
===================================================================
--- TxInterceptor.java (revision 4310)
+++ TxInterceptor.java (revision 4311)
@@ -1076,7 +1076,8 @@
runCommitPhase(gtx, tx, modifications,
onePhaseCommit);
log.debug("Finished commit phase");
break;
-
+ case Status.STATUS_UNKNOWN:
+ log.warn("Received JTA STATUS_UNKNOWN in
afterCompletion()! XA resources may not be in sync. The app should
manually clean up resources at this point.");
case Status.STATUS_MARKED_ROLLBACK:
case Status.STATUS_ROLLEDBACK:
log.debug("Running rollback phase");
Log a warning and then treat as a rollback.
Does this make sense?
On 22 Aug 2007, at 12:00, Manik Surtani wrote:
> Sure. I suspect they would already deal with this in such a manner
> anyway, given that this is how Hibernate deals with STATUS_UNKNOWN.
>
>
> On 22 Aug 2007, at 11:33, Jonathan Halliday wrote:
>
>>
>> The client app will actually get a heuristic exception in response
>> to its commit call and should do cleanup in the exception handler.
>> However, that's not always going to be user code, it may be e.g.
>> the app server's EJB container in the case of CMT. Hence if you go
>> down this route, which I agree is probably the best approach,
>> other parts of the app server may need to be aware of the issues.
>>
>> Jonathan.
>>
>> Manik Surtani wrote:
>>> +1. So the controlling app - which would typically be a
>>> participant in the tx anyway - would react to a STATUS_UNKNOWN by
>>> clearing the cache of the nodes involved. The cache itself just
>>> treats STATUS_UNKNOWN as a rollback.
>>> On 21 Aug 2007, at 19:01, Jason T. Greene wrote:
>>>> Manik Surtani wrote:
>>>>> Ok, I just spoke to Steve @ Hibernate on how Hibernate deals
>>>>> with this situation. From an IM conversation:
>>>>> "that is deemed a failed transaction
>>>>> anything other than committed"
>>>>> So Hibernate rolls back STATUS_UNKNOWN as well. I think this
>>>>> is therefore a safe default.
>>>>> Is there a good reason to try and purge the nodes in such a
>>>>> case? Or just stick with the default above?
>>>>
>>>> I think this makes more sense for the cache controlling
>>>> application to be responsible for removing data. If you look at
>>>> the hibernate case it does stuff outside the realm of the tx
>>>> boundary anyway (putForExternalRead). So even if we did auto
>>>> purge, it's not guaranteed that we are purging the correct data.
>>>>
>>>> --
>>>> Jason T. Greene
>>>> Lead, POJO Cache
>>>> JBoss, a division of Red Hat
>>> --
>>> Manik Surtani
>>> Lead, JBoss Cache
>>> JBoss, a division of Red Hat
>>> _______________________________________________
>>> jbosscache-dev mailing list
>>> jbosscache-dev at lists.jboss.org
>>> https://lists.jboss.org/mailman/listinfo/jbosscache-dev
>>
>>
>> --
>> ------------------------------------------------------------
>> Registered Address: Red Hat UK Ltd, Amberley Place, 107-111
>> Peascod Street, Windsor, Berkshire, SI4 1TE, United Kingdom.
>> Registered in UK and Wales under Company Registration No. 3798903
>> Directors: Michael Cunningham (USA), Charlie Peters (USA) and
>> David Owens (Ireland)
>
> --
> Manik Surtani
>
> Lead, JBoss Cache
> JBoss, a division of Red Hat
>
>
>
> _______________________________________________
> jbosscache-dev mailing list
> jbosscache-dev at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/jbosscache-dev
--
Manik Surtani
Lead, JBoss Cache
JBoss, a division of Red Hat
More information about the jbosscache-dev
mailing list