0

Google AppEngine dev server running on Windows 7 Pro 64 bit throws an exception when I try to view any entity in the local datastore viewer at "http://localhost:8080/_ah/admin/datastore" The entity list is displayed just fine and my application is able to add entities to the datastore. What could the problem be? Is it something related to the security manager?

Nov 28, 2012 8:59:59 PM com.google.appengine.api.datastore.dev.LocalDatastoreService init
INFO: Local Datastore initialized: 
    Type: High Replication
    Storage: d:\project\out\local_db.bin
Nov 28, 2012 8:59:59 PM com.google.appengine.api.datastore.dev.LocalDatastoreService load
INFO: Time to load datastore: 32 ms
Nov 28, 2012 8:59:59 PM com.google.apphosting.utils.jetty.JettyLogger warn
WARNING: /_ah/admin/datastore
java.security.AccessControlException: access denied (java.io.FilePermission d:\project\out\datastore-indexes-auto.xml read)
at java.security.AccessControlContext.checkPermission(AccessControlContext.java:374)
at java.security.AccessController.checkPermission(AccessController.java:546)
at java.lang.SecurityManager.checkPermission(SecurityManager.java:532)
at com.google.appengine.tools.development.DevAppServerFactory$CustomSecurityManager.checkPermission(DevAppServerFactory.java:289)
at java.lang.SecurityManager.checkRead(SecurityManager.java:871)
at java.io.File.exists(File.java:731)
at com.google.appengine.api.datastore.dev.LocalCompositeIndexManager.getGeneratedIndexFileInputStream(LocalCompositeIndexManager.java:430)
at com.google.appengine.api.datastore.dev.LocalCompositeIndexManager.getCompositeIndicesNode(LocalCompositeIndexManager.java:448)
at com.google.appengine.api.datastore.dev.LocalCompositeIndexManager.getIndices(LocalCompositeIndexManager.java:273)
at com.google.appengine.api.datastore.dev.LocalCompositeIndexManager.getIndicesForKind(LocalCompositeIndexManager.java:294)
at com.google.appengine.api.datastore.dev.LocalDatastoreCostAnalysis.changedIndexRows(LocalDatastoreCostAnalysis.java:136)
at com.google.appengine.api.datastore.dev.LocalDatastoreCostAnalysis.getWriteOps(LocalDatastoreCostAnalysis.java:83)
at com.google.appengine.api.datastore.dev.LocalDatastoreCostAnalysis.getWriteCost(LocalDatastoreCostAnalysis.java:61)
at com.google.appengine.api.datastore.dev.LocalDatastoreCostAnalysis.getCreationCostAnalysis(LocalDatastoreCostAnalysis.java:45)
at com.google.appengine.api.datastore.dev.LocalDatastoreService.getCreationCostAnalysis(LocalDatastoreService.java:2580)
at com.google.apphosting.utils.servlet.DatastoreViewerServlet.getEntityViews(DatastoreViewerServlet.java:211)
at com.google.apphosting.utils.servlet.DatastoreViewerServlet.doGetDatastoreViewer(DatastoreViewerServlet.java:295)
at com.google.apphosting.utils.servlet.DatastoreViewerServlet.doGet(DatastoreViewerServlet.java:235)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
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.socket.dev.DevSocketFilter.doFilter(DevSocketFilter.java:74)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
at com.google.appengine.tools.development.ResponseRewriterFilter.doFilter(ResponseRewriterFilter.java:123)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
at com.google.appengine.tools.development.HeaderVerificationFilter.doFilter(HeaderVerificationFilter.java:34)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
at com.google.appengine.api.blobstore.dev.ServeBlobFilter.doFilter(ServeBlobFilter.java:61)
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:125)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
at com.google.appengine.tools.development.BackendServersFilter.doFilter(BackendServersFilter.java:97)
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.appengine.tools.development.DevAppEngineWebAppContext.handle(DevAppEngineWebAppContext.java:94)
at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
at com.google.appengine.tools.development.JettyContainerService$ApiProxyHandler.handle(JettyContainerService.java:383)
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)
faraway
  • 428
  • 2
  • 4
  • 15

1 Answers1

0

Have you tried

  • stopping your dev app server
  • deleting the "datastore-indexes-auto.xml" file
  • restarting your dev app server
  • using the local datastore viewer?
Ian Marshall
  • 760
  • 4
  • 14
  • Sure, I even rebooted... Does it have something to do with Windows7 64 bit? – faraway Nov 29 '12 at 13:10
  • Sorry, I have no idea (I use 32-bit Windows XP). – Ian Marshall Nov 29 '12 at 14:35
  • What IDE do you use and where do you put the local_db and auto indexes files? Does this place get wiped on full project rebuild? – faraway Nov 29 '12 at 19:42
  • I use NetBeans 7.2. These files are placed in the folder "C:\Projects\Work\GAE\war\WEB-INF\appengine-generated". My GAE/J run folder is "\Projects\Work\GAE\war". During the Ant-based app build, the GAE/J run folder is deleted. By the way, you can use a previously-generated db file (by the same version of GAE/J) but do not use a previously-generated indices file; the local dev app server will delete it on the next run. – Ian Marshall Nov 30 '12 at 10:21
  • Afternote: the indices file ("datastore-indexes-auto.xml") I mentioned in the "appengine-generated" folder is generated by GAE/J if you have configured indices to be generated automatically by the dev app server. Where you turn this option off then the dev app server uses an indices file from a different folder ("datastore-indexes.xml" in, for me, "C:\Projects\Work\GAE\war\WEB-INF"). – Ian Marshall Nov 30 '12 at 10:36
  • Wiping your run folder means that you can not reuse the same datastore file between local server runs. It bothered me, so I moved the auto-generated folder out of the run folder with command line switch and this was the cause of the problem (it also appears the this problem happens even if I disable auto index generation). Thank you for the help. – faraway Nov 30 '12 at 11:17
  • I can reuse the same datastore file between local server runs. Between build and run I execute "md "C:\Projects\Work\GAE\war\WEB-INF\appengine-generated"" and "copy "C:\Projects\Work\appengine-generated\local_db.bin" "C:\Projects\Work\GAE\war\WEB-INF\appengine-generated"". When I want to save a useful datastore file, I close the dev app server down and then copy the "local_db.bin" file to my safe place folder "C:\Projects\Work\appengine-generated". – Ian Marshall Nov 30 '12 at 14:25