On 18 Aug 2009, at 15:50, Galder Zamarreno wrote: > Hi all, > > More stuff related to the infinispan cache provider. The way we deal > with transactions that are not ACTIVE or PREPARING has changed from > JBoss Cache to Infinispan. > > In JBoss Cache, TransactionTable.getCurrentTransaction() logged a > message if the transaction's status was committed whereas Infinispan > simply throws an IllegalStateException if the status is neither ACTIVE > nor PREPARING. > > This change of behaivour is making Infinispan cache provider tests > that > do bulk modifications to fail. The reason it fails is because > Hibernate > has a javax.transaction.Synchronization implementation called > CacheSynchronization that in it's afterCompletion(), it leads to call > BulkOperationCleanupAction.evictEntityRegions() which clears the cache > for the affected entities. Now, since the tx status is COMMITTED, the > test fails.
Surely though, at that stage the tx has already committed (and hence the name of the callback - afterCompletion()). If anything, operations here should happen outside the scope of the tx. Can't the cleanup call happen in beforeCompletion(), after any Hibernate resources have performed their beforeCompletion() steps? > Would there be any problems in maintaining the previous logic? While I don't have any problems reverting to the older logic, I just feel that doing so hides bugs elsewhere. Cheers -- Manik Surtani ma...@jboss.org Lead, Infinispan Lead, JBoss Cache http://www.infinispan.org http://www.jbosscache.org _______________________________________________ hibernate-dev mailing list hibernate-dev@lists.jboss.org https://lists.jboss.org/mailman/listinfo/hibernate-dev