Thank you for the detailed bug report, Eddy. - Jason On Thu, Aug 27, 2009 at 12:25 AM, eddyd <dimitrov...@gmail.com> wrote:
> > Yes, it is clear now: > 1. It works if before the request there is one persisted entity of > type A and in the request all entities of type A are deleted (out of > transaction) and two entities of type A are persisted (out of > transaction). > 2. It fails if before the request entity of type A has never been > persisted and in the request two entities of type A are persisted (out > of transaction) - fails with the above exception. > > Looks like a bug (not fatal). I will add this description to the > issue, I raised yesterday (issue 117). > > On Aug 27, 2:20 pm, eddyd <dimitrov...@gmail.com> wrote: > > I can not reproduce the problem in simple code. By the way the full- > > size code also works, when uploaded. Anyway it consistently fails on > > the development server - in one and the same way. If the above log > > does not say enough, I will have to investigate more. > > > > On Aug 27, 6:49 am, "Jason (Google)" <apija...@google.com> wrote: > > > > > If I'm reading your logs correctly, you should be able to add both > entities > > > since you're supposedly not operating inside of a transaction. Can you > post > > > your full test code? > > > > > - Jason > > > > > On Tue, Aug 25, 2009 at 3:50 AM, eddyd <dimitrov...@gmail.com> wrote: > > > > > > 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 google-appengine-java@googlegroups.com To unsubscribe from this group, send email to google-appengine-java+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/google-appengine-java?hl=en -~----------~----~----~----~------~----~------~--~---