Bug in implementation of 'remove' in db.js?

3 views
Skip to first unread message

Giacecco

unread,
Jul 31, 2010, 2:59:52 PM7/31/10
to appenginejs
I am trying to do some mass-deletion of a table in the datastore with
very simple code like:

exports.Temp = function() {
var query, entries;
query = TwitterEntry.all();
entries = query.fetch(1000);
db.remove(entries); // this is line 12 in no_jour_twitter.js, see
error below
}

The code should work, see
http://stackoverflow.com/questions/1062540/how-to-delete-all-datastore-in-google-app-engine

BUT

I get this strange error:


Problem accessing /_test. Reason:

Wrapped java.lang.ClassCastException: java.lang.String cannot be
cast to com.google.appengine.api.datastore.Key (google/appengine/ext/
db.js#127)
Caused by:

org.mozilla.javascript.WrappedException: Wrapped
java.lang.ClassCastException: java.lang.String cannot be cast to
com.google.appengine.api.datastore.Key (google/appengine/ext/
db.js#127)
at org.mozilla.javascript.Context.throwAsScriptRuntimeEx(Context.java:
1781)
at org.mozilla.javascript.MemberBox.invoke(MemberBox.java:183)
at org.mozilla.javascript.NativeJavaMethod.call(NativeJavaMethod.java:
247)
at org.mozilla.javascript.Interpreter.interpretLoop(Interpreter.java:
1711)
at script(google/appengine/ext/db.js:127)
at script(no_jour_twitter.js:12)
at script(main.js:84)
at script(co_giacec_tools.js:15)
at script(co_giacec_tools.js:120)
at script(main.js:94)
at script(main.js:9)
at script.handleRequest(ringo/jsgi.js:33)
at org.mozilla.javascript.Interpreter.interpret(Interpreter.java:854)
at
org.mozilla.javascript.InterpretedFunction.call(InterpretedFunction.java:
164)
at
org.mozilla.javascript.ContextFactory.doTopCall(ContextFactory.java:
426)
at org.mozilla.javascript.ScriptRuntime.doTopCall(ScriptRuntime.java:
3161)
at
org.mozilla.javascript.InterpretedFunction.call(InterpretedFunction.java:
162)
at org.ringojs.engine.RhinoEngine.invoke(RhinoEngine.java:255)
at org.ringojs.jsgi.JsgiServlet.service(JsgiServlet.java:127)
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
$CachedChain.doFilter(ServletHandler.java:1166)
at
com.google.appengine.api.blobstore.dev.ServeBlobFilter.doFilter(ServeBlobFilter.java:
51)
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
com.google.appengine.tools.development.StaticFileFilter.doFilter(StaticFileFilter.java:
122)
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.utils.jetty.DevAppEngineWebAppContext.handle(DevAppEngineWebAppContext.java:
70)
at
org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:
152)
at com.google.appengine.tools.development.JettyContainerService
$ApiProxyHandler.handle(JettyContainerService.java:349)
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 org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:547)
at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:212)
at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404)
at
org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:
409)
at org.mortbay.thread.QueuedThreadPool
$PoolThread.run(QueuedThreadPool.java:582)
Caused by: java.lang.ClassCastException: java.lang.String cannot be
cast to com.google.appengine.api.datastore.Key
at com.google.appengine.api.datastore.DatastoreServiceImpl
$3.run(DatastoreServiceImpl.java:243)
at
com.google.appengine.api.datastore.TransactionRunner.runInTransaction(TransactionRunner.java:
30)
at
com.google.appengine.api.datastore.DatastoreServiceImpl.delete(DatastoreServiceImpl.java:
236)
at
com.google.appengine.api.datastore.DatastoreServiceImpl.delete(DatastoreServiceImpl.java:
222)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:
39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:
25)
at java.lang.reflect.Method.invoke(Method.java:597)
at
com.google.appengine.tools.development.agent.runtime.Runtime.invoke(Runtime.java:
100)
at org.mozilla.javascript.MemberBox.invoke(MemberBox.java:161)
... 35 more
Caused by:

java.lang.ClassCastException: java.lang.String cannot be cast to
com.google.appengine.api.datastore.Key
at com.google.appengine.api.datastore.DatastoreServiceImpl
$3.run(DatastoreServiceImpl.java:243)
at
com.google.appengine.api.datastore.TransactionRunner.runInTransaction(TransactionRunner.java:
30)
at
com.google.appengine.api.datastore.DatastoreServiceImpl.delete(DatastoreServiceImpl.java:
236)
at
com.google.appengine.api.datastore.DatastoreServiceImpl.delete(DatastoreServiceImpl.java:
222)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:
39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:
25)
at java.lang.reflect.Method.invoke(Method.java:597)
at
com.google.appengine.tools.development.agent.runtime.Runtime.invoke(Runtime.java:
100)
at org.mozilla.javascript.MemberBox.invoke(MemberBox.java:161)
at org.mozilla.javascript.NativeJavaMethod.call(NativeJavaMethod.java:
247)
at org.mozilla.javascript.Interpreter.interpretLoop(Interpreter.java:
1711)
at org.mozilla.javascript.Interpreter.interpret(Interpreter.java:854)
at
org.mozilla.javascript.InterpretedFunction.call(InterpretedFunction.java:
164)
at
org.mozilla.javascript.ContextFactory.doTopCall(ContextFactory.java:
426)
at org.mozilla.javascript.ScriptRuntime.doTopCall(ScriptRuntime.java:
3161)
at
org.mozilla.javascript.InterpretedFunction.call(InterpretedFunction.java:
162)
at org.ringojs.engine.RhinoEngine.invoke(RhinoEngine.java:255)
at org.ringojs.jsgi.JsgiServlet.service(JsgiServlet.java:127)
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
$CachedChain.doFilter(ServletHandler.java:1166)
at
com.google.appengine.api.blobstore.dev.ServeBlobFilter.doFilter(ServeBlobFilter.java:
51)
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
com.google.appengine.tools.development.StaticFileFilter.doFilter(StaticFileFilter.java:
122)
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.utils.jetty.DevAppEngineWebAppContext.handle(DevAppEngineWebAppContext.java:
70)
at
org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:
152)
at com.google.appengine.tools.development.JettyContainerService
$ApiProxyHandler.handle(JettyContainerService.java:349)
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 org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:547)
at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:212)
at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404)
at
org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:
409)
at org.mortbay.thread.QueuedThreadPool
$PoolThread.run(QueuedThreadPool.java:582)
Powered by Jetty://

George Moschovitis

unread,
Aug 1, 2010, 2:54:41 AM8/1/10
to appen...@googlegroups.com
You are right, the Python API supports this.

Just pushed a patch.

thanks,
-g.
--
http://www.gmosx.com/blog
http://www.appenginejs.org
Reply all
Reply to author
Forward
0 new messages