I have a PersistenceManager

PersistenceManager pm = PMF.get().getPersistenceManager();

which I use to do a bunch of operations on different objects, but
WITHOUT transaction (run queries, store entities and lookup entities).


I then close the manager with pm.close() and get this obscure error
that complains about multiple entity groups inside a transaction even
though I am not using a transaction (you will notice that the error is
not the usual one where it prints the different entity groups).

I am not 100% confident but have the impression that this error
started happening with the 1.3.4 release.
100% reproducible use case. Would appreciate input from App Engine
developers.

com.myapp.servlet.task.PopulateUserPages doAction: Illegal argument
javax.jdo.JDOFatalUserException: Illegal argument
        at
org.datanucleus.jdo.NucleusJDOHelper.getJDOExceptionForNucleusException(NucleusJDOHelper.java:
344)
        at
org.datanucleus.jdo.JDOPersistenceManager.close(JDOPersistenceManager.java:
281)
        at com.myapp.dao.jdo.DatastoreService.release(DatastoreService.java:
631)
        at
com.myapp.servlet.AbstractBaseServlet.releaseService(AbstractBaseServlet.java:
243)
        at
com.myapp.servlet.task.PopulateUserPages.doAction(PopulateUserPages.java:
132)
        at com.myapp.servlet.task.Dispatcher.doAction(Dispatcher.java:35)
        at com.myapp.servlet.task.TaskServlet.doAction(TaskServlet.java:36)
        at
com.myapp.servlet.AbstractBaseServlet.doGenericAction(AbstractBaseServlet.java:
194)
        at
com.myapp.servlet.AbstractBaseServlet.doPost(AbstractBaseServlet.java:
84)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:713)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:806)
        at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:
511)
        at org.mortbay.jetty.servlet.ServletHandler
$CachedChain.doFilter(ServletHandler.java:1166)
        at
com.google.apphosting.utils.servlet.ParseBlobUploadFilter.doFilter(ParseBlobUploadFilter.java:
97)
        at org.mortbay.jetty.servlet.ServletHandler
$CachedChain.doFilter(ServletHandler.java:1157)
        at
com.google.apphosting.runtime.jetty.SaveSessionFilter.doFilter(SaveSessionFilter.java:
35)
        at org.mortbay.jetty.servlet.ServletHandler
$CachedChain.doFilter(ServletHandler.java:1157)
        at
com.google.apphosting.utils.servlet.TransactionCleanupFilter.doFilter(TransactionCleanupFilter.java:
43)
        at org.mortbay.jetty.servlet.ServletHandler
$CachedChain.doFilter(ServletHandler.java:1157)
        at
org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:
388)
        at
org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:
216)
        at
org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:
182)
        at
org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:
765)
        at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:
418)
        at
com.google.apphosting.runtime.jetty.AppVersionHandlerMap.handle(AppVersionHandlerMap.java:
238)
        at
org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:
152)
        at org.mortbay.jetty.Server.handle(Server.java:326)
        at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:
542)
        at org.mortbay.jetty.HttpConnection
$RequestHandler.headerComplete(HttpConnection.java:923)
        at
com.google.apphosting.runtime.jetty.RpcRequestParser.parseAvailable(RpcRequestParser.java:
76)
        at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404)
        at
com.google.apphosting.runtime.jetty.JettyServletEngineAdapter.serviceRequest(JettyServletEngineAdapter.java:
135)
        at
com.google.apphosting.runtime.JavaRuntime.handleRequest(JavaRuntime.java:
250)
        at com.google.apphosting.base.RuntimePb$EvaluationRuntime
$6.handleBlockingRequest(RuntimePb.java:5838)
        at com.google.apphosting.base.RuntimePb$EvaluationRuntime
$6.handleBlockingRequest(RuntimePb.java:5836)
        at
com.google.net.rpc.impl.BlockingApplicationHandler.handleRequest(BlockingApplicationHandler.java:
24)
        at com.google.net.rpc.impl.RpcUtil.runRpcInApplication(RpcUtil.java:
398)
        at com.google.net.rpc.impl.Server$2.run(Server.java:852)
        at
com.google.tracing.LocalTraceSpanRunnable.run(LocalTraceSpanRunnable.java:
56)
        at
com.google.tracing.LocalTraceSpanBuilder.internalContinueSpan(LocalTraceSpanBuilder.java:
576)
        at com.google.net.rpc.impl.Server.startRpc(Server.java:807)
        at com.google.net.rpc.impl.Server.processRequest(Server.java:369)
        at
com.google.net.rpc.impl.ServerConnection.messageReceived(ServerConnection.java:
442)
        at
com.google.net.rpc.impl.RpcConnection.parseMessages(RpcConnection.java:
319)
        at
com.google.net.rpc.impl.RpcConnection.dataReceived(RpcConnection.java:
290)
        at com.google.net.async.Connection.handleReadEvent(Connection.java:
474)
        at
com.google.net.async.EventDispatcher.processNetworkEvents(EventDispatcher.java:
831)
        at
com.google.net.async.EventDispatcher.internalLoop(EventDispatcher.java:
207)
        at com.google.net.async.EventDispatcher.loop(EventDispatcher.java:
103)
        at
com.google.net.rpc.RpcService.runUntilServerShutdown(RpcService.java:
251)
        at com.google.apphosting.runtime.JavaRuntime
$RpcRunnable.run(JavaRuntime.java:413)
        at java.lang.Thread.run(Unknown Source)
NestedThrowablesStackTrace:
java.lang.IllegalArgumentException: can't operate on multiple entity
groups in a single transaction.
        at
com.google.appengine.api.datastore.DatastoreApiHelper.translateError(DatastoreApiHelper.java:
34)
        at
com.google.appengine.api.datastore.DatastoreApiHelper.makeSyncCall(DatastoreApiHelper.java:
67)
        at com.google.appengine.api.datastore.DatastoreServiceImpl
$1.run(DatastoreServiceImpl.java:128)
        at
com.google.appengine.api.datastore.TransactionRunner.runInTransaction(TransactionRunner.java:
30)
        at
com.google.appengine.api.datastore.DatastoreServiceImpl.get(DatastoreServiceImpl.java:
111)
        at
com.google.appengine.api.datastore.DatastoreServiceImpl.get(DatastoreServiceImpl.java:
84)
        at
com.google.appengine.api.datastore.DatastoreServiceImpl.get(DatastoreServiceImpl.java:
72)
        at
org.datanucleus.store.appengine.RuntimeExceptionWrappingDatastoreService.get(RuntimeExceptionWrappingDatastoreService.java:
63)
        at
org.datanucleus.store.appengine.DatastorePersistenceHandler.get(DatastorePersistenceHandler.java:
96)
        at
org.datanucleus.store.appengine.DatastorePersistenceHandler.get(DatastorePersistenceHandler.java:
106)
        at
org.datanucleus.store.appengine.DatastorePersistenceHandler.updateObject(DatastorePersistenceHandler.java:
530)
        at
org.datanucleus.state.JDOStateManagerImpl.flush(JDOStateManagerImpl.java:
4576)
        at
org.datanucleus.ObjectManagerImpl.flushInternal(ObjectManagerImpl.java:
2814)
        at org.datanucleus.ObjectManagerImpl.flush(ObjectManagerImpl.java:
2754)
        at org.datanucleus.ObjectManagerImpl.preCommit(ObjectManagerImpl.java:
2893)
        at
org.datanucleus.TransactionImpl.internalPreCommit(TransactionImpl.java:
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 com.myapp.dao.jdo.DatastoreService.release(DatastoreService.java:
631)
        at
com.myapp.servlet.AbstractBaseServlet.releaseService(AbstractBaseServlet.java:
243)
        at
com.myapp.servlet.task.PopulateUserPages.doAction(PopulateUserPages.java:
132)
        at com.myapp.servlet.task.Dispatcher.doAction(Dispatcher.java:35)
        at com.myapp.servlet.task.TaskServlet.doAction(TaskServlet.java:36)
        at
com.myapp.servlet.AbstractBaseServlet.doGenericAction(AbstractBaseServlet.java:
194)
        at
com.myapp.servlet.AbstractBaseServlet.doPost(AbstractBaseServlet.java:
84)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:713)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:806)
        at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:
511)
        at org.mortbay.jetty.servlet.ServletHandler
$CachedChain.doFilter(ServletHandler.java:1166)
        at
com.google.apphosting.utils.servlet.ParseBlobUploadFilter.doFilter(ParseBlobUploadFilter.java:
97)
        at org.mortbay.jetty.servlet.ServletHandler
$CachedChain.doFilter(ServletHandler.java:1157)
        at
com.google.apphosting.runtime.jetty.SaveSessionFilter.doFilter(SaveSessionFilter.java:
35)
        at org.mortbay.jetty.servlet.ServletHandler
$CachedChain.doFilter(ServletHandler.java:1157)
        at
com.google.apphosting.utils.servlet.TransactionCleanupFilter.doFilter(TransactionCleanupFilter.java:
43)
        at org.mortbay.jetty.servlet.ServletHandler
$CachedChain.doFilter(ServletHandler.java:1157)
        at
org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:
388)
        at
org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:
216)
        at
org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:
182)
        at
org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:
765)
        at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:
418)
        at com.google.apphosting.runtime.jetty.AppVersionHandlerMap.ha

-- 
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-j...@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