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
-~----------~----~----~----~------~----~------~--~---

Reply via email to