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.getCurrentTransaction(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(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:261)
>       at 
> com.google.apphosting.base.RuntimePb$EvaluationRuntime$6.handleBlockingRequest(RuntimePb.java:8483)
>       at 
> com.google.apphosting.base.RuntimePb$EvaluationRuntime$6.handleBlockingRequest(RuntimePb.java:8481)
>       at 
> com.google.net.rpc.impl.BlockingApplicationHandler.handleRequest(BlockingApplicationHandler.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.java:448)
>       at com.google.tracing.TraceContext.runInContext(TraceContext.java:688)
>       at 
> com.google.tracing.TraceContext$AbstractTraceContextCallback.runInInheritedContextNoUnref(TraceContext.java:326)
>       at 
> com.google.tracing.TraceContext$AbstractTraceContextCallback.runInInheritedContext(TraceContext.java:318)
>       at 
> com.google.tracing.TraceContext$TraceContextRunnable.run(TraceContext.java:446)
>       at 
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
>       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%[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