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.

Reply via email to