In case anyone encounters the same problem, I've solved this problem
and here's the link:

http://stackoverflow.com/questions/3031214/what-is-read-operations-inside-transactions-cant-allow-failover

On Jun 13, 2:19 am, Kenyth <[email protected]> wrote:
> From time to time I got the following exception message on GAE for my
> App. I searched with Google, no relevant results are found. Does
> anyone know about this? Thanks in advance for any response!
>
> The exception message is as below:
>
> Nested in org.springframework.orm.jpa.JpaSystemException: Illegal
> argument; nested exception is javax.persistence.PersistenceException:
> Illegal argument:
> java.lang.IllegalArgumentException: read operations inside
> transactions can't allow failover
>         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:
> 77)
>         at
> org.datanucleus.store.appengine.RuntimeExceptionWrappingDatastoreService.get(RuntimeExceptionWrappingDatastoreService.java:
> 53)
>         at
> org.datanucleus.store.appengine.DatastorePersistenceHandler.get(DatastorePersistenceHandler.java:
> 94)
>         at
> org.datanucleus.store.appengine.DatastorePersistenceHandler.get(DatastorePersistenceHandler.java:
> 106)
>         at
> org.datanucleus.store.appengine.DatastorePersistenceHandler.fetchObject(DatastorePersistenceHandler.java:
> 464)
>         at
> org.datanucleus.state.JDOStateManagerImpl.loadUnloadedFieldsInFetchPlan(JDOStateManagerImpl.java:
> 1627)
>         at
> org.datanucleus.state.JDOStateManagerImpl.loadFieldsInFetchPlan(JDOStateManagerImpl.java:
> 1603)
>         at
> org.datanucleus.ObjectManagerImpl.performDetachAllOnCommitPreparation(ObjectManagerImpl.java:
> 3192)
>         at org.datanucleus.ObjectManagerImpl.preCommit(ObjectManagerImpl.java:
> 2931)
>         at
> org.datanucleus.TransactionImpl.internalPreCommit(TransactionImpl.java:
> 369)
>         at org.datanucleus.TransactionImpl.commit(TransactionImpl.java:256)
>         at
> org.datanucleus.jpa.EntityTransactionImpl.commit(EntityTransactionImpl.java:
> 104)
>         at
> org.datanucleus.store.appengine.jpa.DatastoreEntityTransactionImpl.commit(DatastoreEntityTransactionImpl.java:
> 55)
>         at name.kenyth.playtweets.service.Tx.run(Tx.java:39)
>         at
> name.kenyth.playtweets.web.controller.TwitterApiController.persistStatus(TwitterApiController.java:
> 309)
>         at
> name.kenyth.playtweets.web.controller.TwitterApiController.processStatusesForWebCall(TwitterApiController.java:
> 271)
>         at
> name.kenyth.playtweets.web.controller.TwitterApiController.getHomeTimelineUpdates_aroundBody0(TwitterApiController.java:
> 247)
>         at name.kenyth.playtweets.web.controller.TwitterApiController
> $AjcClosure1.run(TwitterApiController.java:1)
>         at name.kenyth.playtweets.web.refine.AuthenticationEnforcement.ajc
> $around$name_kenyth_playtweets_web_refine_AuthenticationEnforcement
> $2$439820b7proceed(AuthenticationEnforcement.aj:1)
>         at name.kenyth.playtweets.web.refine.AuthenticationEnforcement.ajc
> $around$name_kenyth_playtweets_web_refine_AuthenticationEnforcement
> $2$439820b7(AuthenticationEnforcement.aj:168)
>         at
> name.kenyth.playtweets.web.controller.TwitterApiController.getHomeTimelineUpdates(TwitterApiController.java:
> 129)
>         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>         at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
>         at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
>         at java.lang.reflect.Method.invoke(Method.java:43)
>         at
> org.springframework.web.bind.annotation.support.HandlerMethodInvoker.doInvokeMethod(HandlerMethodInvoker.java:
> 710)
>         at
> org.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:
> 167)
>         at
> org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:
> 414)
>         at
> org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:
> 402)
>         at
> org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:
> 771)
>         at
> org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:
> 716)
>         at
> org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:
> 647)
>         at
> org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:
> 552)
>         at javax.servlet.http.HttpServlet.service(HttpServlet.java:693)
>         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.handle(ServletHandler.java:
> 390)
>         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 org.mortbay.jetty.servlet.Dispatcher.forward(Dispatcher.java:327)
>         at org.mortbay.jetty.servlet.Dispatcher.forward(Dispatcher.java:126)
>         at
> org.tuckey.web.filters.urlrewrite.NormalRewrittenUrl.doRewrite(NormalRewrittenUrl.java:
> 195)
>         at
> org.tuckey.web.filters.urlrewrite.RuleChain.handleRewrite(RuleChain.java:
> 159)
>         at org.tuckey.web.filters.urlrewrite.RuleChain.doRules(RuleChain.java:
> 141)
>         at
> org.tuckey.web.filters.urlrewrite.UrlRewriter.processRequest(UrlRewriter.java:
> 90)
>         at
> org.tuckey.web.filters.urlrewrite.UrlRewriteFilter.doFilter(UrlRewriteFilter.java:
> 417)
>         at org.mortbay.jetty.servlet.ServletHandler
> $CachedChain.doFilter(ServletHandler.java:1157)
>         at
> org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:
> 71)
>         at
> org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:
> 76)
>         at org.mortbay.jetty.servlet.ServletHandler
> $CachedChain.doFilter(ServletHandler.java:1157)
>         at
> org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:
> 88)
>         at
> org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:
> 76)
>         at org.mortbay.jetty.servlet.ServletHandler
> $CachedChain.doFilter(ServletHandler.java:1157)
>         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

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

Reply via email to