This error was caused by a bug in Clojure's method dispatch code. Anyone else with the same problem should check out this thread on the Clojure group for a fix:
http://groups.google.com/group/clojure/browse_thread/thread/5440bbcf1c06f3b6 On Oct 15, 12:42 pm, "Max Ross (Google)" <[email protected]> wrote: > We refactored the internals of the DatastoreService implementation pretty > heavily in the release we just pushed out but there shouldn't have been any > backwards incompatible changes to the public API. I'm not familiar with > appengine-clj. Does it use reflection to access non-public > classes/methods/fields? If so that's not safe, since we only guarantee > backwards compatibility for the public API. If not then I'll need more > info. > > Thanks, > Max > > > > On Thu, Oct 14, 2010 at 12:14 PM, Darren Clarke <[email protected]> wrote: > > Has anything changed with class access levels (public vs. private) in the > > production datastore code in the last day or so? > > > I've had a Clojure app running for several weeks and starting last night, > > whenever I try to access the datastore, I get the error below. It could be > > a bug in the library I'm using (appengine-clj) or even in Clojure's > > dispatch code, but I just want to understand if anything has changed > > server-side that might have triggered it. The application still works on > > the dev appserver v1.3.7. > > > java.lang.IllegalArgumentException: Can't call public method of non-public > > class: public com.google.appengine.api.datastore.Transaction > > com.google.appengine.api.datastore.BaseDatastoreService.getCurrentTransacti > > on(com.google.appengine.api.datastore.Transaction) > > at clojure.lang.Reflector.invokeMatchingMethod(Reflector.java:85) > > at clojure.lang.Reflector.invokeInstanceMethod(Reflector.java:28) > > at appengine.datastore.service$current_transaction.invoke(service.clj:72) > > at appengine.datastore.service$put_entity.invoke(service.clj:131) > > at appengine.datastore.service$fn__176.invoke(service.clj:149) > > at appengine.datastore.service$fn__136$G__116__141.invoke(service.clj:10) > > at > > com.redaranj.ledes.service.servlet$fn__1902$fn__1903.invoke(servlet.clj:17) > > at compojure.core$routes$fn__1706$fn__1707.invoke(core.clj:72) > > at clojure.core$some.invokeStatic(core.clj:2297) > > at compojure.core$routes$fn__1706.invoke(core.clj:71) > > at ring.middleware.params$wrap_params$fn__1468.invoke(params.clj:77) > > at ring.middleware.cookies$wrap_cookies$fn__1559.invoke(cookies.clj:123) > > at ring.util.servlet$make_service_method$fn__1881.invoke(servlet.clj:117) > > at com.redaranj.ledes.service.servlet$_service.invoke(servlet.clj:19) > > at com.redaranj.ledes.service.servlet.service(Unknown Source) > > at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511) > > at > > org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandle > > r.java:1166) > > at > > com.google.apphosting.utils.servlet.ParseBlobUploadFilter.doFilter(ParseBlo > > bUploadFilter.java:97) > > at > > org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandle > > r.java:1157) > > at > > com.google.apphosting.runtime.jetty.SaveSessionFilter.doFilter(SaveSessionF > > ilter.java:35) > > at > > org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandle > > r.java:1157) > > at > > com.google.apphosting.utils.servlet.TransactionCleanupFilter.doFilter(Trans > > actionCleanupFilter.java:43) > > at > > org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandle > > r.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(AppVersionH > > andlerMap.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(HttpConnecti > > on.java:923) > > at > > com.google.apphosting.runtime.jetty.RpcRequestParser.parseAvailable(RpcRequ > > estParser.java:76) > > at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404) > > at > > com.google.apphosting.runtime.jetty.JettyServletEngineAdapter.serviceReques > > t(JettyServletEngineAdapter.java:135) > > at > > com.google.apphosting.runtime.JavaRuntime.handleRequest(JavaRuntime.java:26 > > 1) > > at > > com.google.apphosting.base.RuntimePb$EvaluationRuntime$6.handleBlockingRequ > > est(RuntimePb.java:8483) > > at > > com.google.apphosting.base.RuntimePb$EvaluationRuntime$6.handleBlockingRequ > > est(RuntimePb.java:8481) > > at > > com.google.net.rpc.impl.BlockingApplicationHandler.handleRequest(BlockingAp > > plicationHandler.java:24) > > at com.google.net.rpc.impl.RpcUtil.runRpcInApplication(RpcUtil.java:418) > > at com.google.net.rpc.impl.Server$RpcTask.runInContext(Server.java:572) > > at > > com.google.tracing.TraceContext$TraceContextRunnable$1.run(TraceContext.jav > > a:448) > > at com.google.tracing.TraceContext.runInContext(TraceContext.java:688) > > at > > com.google.tracing.TraceContext$AbstractTraceContextCallback.runInInherited > > ContextNoUnref(TraceContext.java:326) > > at > > com.google.tracing.TraceContext$AbstractTraceContextCallback.runInInherited > > Context(TraceContext.java:318) > > at > > com.google.tracing.TraceContext$TraceContextRunnable.run(TraceContext.java: > > 446) > > at > > java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1 > > 110) > > at > > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java: > > 603) > > at java.lang.Thread.run(Thread.java:636) > > > -- > > 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]<google-appengine-java%2B > > [email protected]> > > . > > For more options, visit this group at > >http://groups.google.com/group/google-appengine-java?hl=en. -- 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.
