[appengine-java] Any changes to access levels in com.google.appengine.api.datastore recently?
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 google-appengine-j...@googlegroups.com. To unsubscribe from this grou
Re: [appengine-java] Any changes to access levels in com.google.appengine.api.datastore recently?
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 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