views:

21

answers:

1

I believe I am getting JDO commit Exceptions due to the transactions nesting although I'm not sure.

Will this detect the situation where I am starting a transaction when another is pending?

 PersistenceManager pm = PersistenceManagerFactory.get().getPersistenceManager();
 assert  pm.currentTransaction().isActive() == false  : "arrrgh";
 pm.currentTransaction().begin();

Is there a better or more reliable way?

A: 

courtesy of Ikai Lan (Google)

You can't detect whether a transaction is active. The reason is that datastore entity groups are not pessimistically locked: they are optimistically locked. That is, the checking for whether your application operated on stale data is checked at write time, not at data read time.

Stevko