This happens on the development server, using JPA. In the request
there are:
1. transaction.begin; run query; transaction.commit; log
(transaction.isActive)
2. (w/o transaction) delete entry; log(transaction.isActive)
3. (w/o transaction) add entry; log(transaction.isActive)
4. (w/o transaction) add entry; log(transaction.isActive)
5. log(transaction.isActive); close connection (i.e. close
entityManager)
And "close connection" fails, because it tries to commit a
transaction, which fails because there are two entities in different
entity groups - see the messages bellow. And at any point the logs
show "transaction.isActive::false".
My question - why at "close connection" does it try to commit, if
there is no active transaction??
==============
Aug 25, 2009 9:56:50 AM
com.mound.flexiview.fvstory.StoryEntryRepositoryJPA list
Entries
INFO: story::listEntries::transaction.isActive::false
Aug 25, 2009 9:56:50 AM
com.mound.flexiview.fvstory.StoryEntryRepositoryJPA dele
teEntries
INFO: story::deleteEntries::transaction.isActive::false
Aug 25, 2009 9:56:50 AM
com.mound.flexiview.fvstory.StoryEntryRepositoryJPA addE
ntry
INFO: story::addEntry::transaction.isActive::false
Aug 25, 2009 9:56:50 AM
com.mound.flexiview.fvstory.StoryEntryRepositoryJPA addE
ntry
INFO: story::addEntry::transaction.isActive::false
Aug 25, 2009 9:56:50 AM com.mound.flexiview.db.DBManagerJPA
closeConnection
INFO: closeConnection::transaction.isActive::false
Aug 25, 2009 9:56:50 AM com.mound.flexiview.db.DBManagerJPA
closeConnection
WARNING: closeConnection failed (close)::
javax.persistence.PersistenceException: Illegal argument
at
org.datanucleus.jpa.NucleusJPAHelper.getJPAExceptionForJDOException(N
ucleusJPAHelper.java:214)
at org.datanucleus.jpa.EntityManagerImpl.close
(EntityManagerImpl.java:15
7)
at
org.datanucleus.store.appengine.jpa.DatastoreEntityManager.close(Data
storeEntityManager.java:54)
at com.mound.flexiview.db.DBManagerJPA.closeConnection(Unknown
Source)
at com.mound.flexiview.db.DBPhaseListener.afterPhase(Unknown
Source)
at com.sun.faces.lifecycle.Phase.handleAfterPhase(Phase.java:
179)
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:103)
...........
Caused by: java.lang.IllegalArgumentException: can't operate on
multiple entity
groups in a single transaction. found both
com.google.appengine.api.datastore.de
v.localdatastoreservice$profile$entitygr...@1bd427 and
com.google.appengine.api.
datastore.dev.localdatastoreservice$profile$entitygr...@1054f93
at
com.google.appengine.api.datastore.DatastoreApiHelper.translateError(
DatastoreApiHelper.java:29)
at
com.google.appengine.api.datastore.DatastoreApiHelper.makeSyncCall(Da
tastoreApiHelper.java:56)
at com.google.appengine.api.datastore.DatastoreServiceImpl
$2.run(Datasto
reServiceImpl.java:169)
at
com.google.appengine.api.datastore.TransactionRunner.runInTransaction
(TransactionRunner.java:30)
at com.google.appengine.api.datastore.DatastoreServiceImpl.put
(Datastore
ServiceImpl.java:157)
at com.google.appengine.api.datastore.DatastoreServiceImpl.put
(Datastore
ServiceImpl.java:137)
at com.google.appengine.api.datastore.DatastoreServiceImpl.put
(Datastore
ServiceImpl.java:133)
at
org.datanucleus.store.appengine.RuntimeExceptionWrappingDatastoreServ
ice.put(RuntimeExceptionWrappingDatastoreService.java:104)
at
org.datanucleus.store.appengine.DatastorePersistenceHandler.put(Datas
torePersistenceHandler.java:125)
at
org.datanucleus.store.appengine.DatastorePersistenceHandler.put(Datas
torePersistenceHandler.java:94)
at
org.datanucleus.store.appengine.DatastorePersistenceHandler.insertObj
ect(DatastorePersistenceHandler.java:195)
at
org.datanucleus.state.JDOStateManagerImpl.internalMakePersistent(JDOS
tateManagerImpl.java:3185)
at org.datanucleus.state.JDOStateManagerImpl.flush
(JDOStateManagerImpl.j
ava:4513)
at org.datanucleus.ObjectManagerImpl.flushInternal
(ObjectManagerImpl.jav
a:2814)
at org.datanucleus.ObjectManagerImpl.flush
(ObjectManagerImpl.java:2754)
at org.datanucleus.ObjectManagerImpl.preCommit
(ObjectManagerImpl.java:28
93)
at org.datanucleus.TransactionImpl.internalPreCommit
(TransactionImpl.jav
a:369)
at org.datanucleus.TransactionImpl.commit(TransactionImpl.java:
256)
at org.datanucleus.ObjectManagerImpl.close
(ObjectManagerImpl.java:801)
at org.datanucleus.jdo.JDOPersistenceManager.close
(JDOPersistenceManager
.java:271)
at org.datanucleus.jpa.EntityManagerImpl.close
(EntityManagerImpl.java:15
3)
............
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Google App Engine for Java" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/google-appengine-java?hl=en
-~----------~----~----~----~------~----~------~--~---