[appengine-java] Re: DataStore Error 1000000 characters, but I'm not persisting
I've discovered my issue - Apache Wicket. Wicket has it's own Session that stores data in an ISessionStore. Normally, this is backed by a Disk, but can be backed with an HttpSession if set properly. The trick is that it stores a lot of state with each page, which I can change now that I know the issue - prior to this point, my pages were simple HTML. My new question is this: when does the HttpSession become persisted? Are setAttribute(), getAttribute() calls to HttpSession equivalent to datastore queries? In that case, would I see a performance improvement using MemCache with the HttpSession as a fallback? Thanks! Jake On Feb 10, 11:23 am, Don Schwarz schwa...@google.com wrote: How much data are you storing in your session? Currently, the serialized representation of a sessions contents must be the 1MB entity limit. On Tue, Feb 9, 2010 at 12:46 PM, Jake jbrooko...@cast.org wrote: Hello, I'm getting the following error: java.lang.IllegalArgumentException: string property _values is too long. It cannot exceed 100 characters. The trick is, I'm not persisting any Blobs and certainly none called _values. I do have one object with a Blob field, but I'm not persisting anything to that field to cause the above exception. Also, this is a new issue and that Blob has been in my application for awhile. All I'm doing is viewing pages that query the datastore. My admin panel doesn't show any quota issues. My newest change is that I'm uploading a 350K XML file (a book), applying some XSLT translation using Saxon and storing the result in an application variable, and displaying certain chunks of that file depending on the clicked page. I do have sessions enabled, which I fear is related, but I'm not sure how to resolve this. Thanks in advance for any help! Jake /titlepage java.lang.IllegalArgumentException: string property _values is too long. It cannot exceed 100 characters. at com.google.appengine.api.datastore.DatastoreApiHelper.translateError(DatastoreApiHelper.java: 33) at com.google.appengine.api.datastore.DatastoreApiHelper.makeSyncCall(DatastoreApiHelper.java: 60) at com.google.appengine.api.datastore.DatastoreServiceImpl $2.run(DatastoreServiceImpl.java:163) at com.google.appengine.api.datastore.TransactionRunner.runInTransaction(TransactionRunner.java: 30) at com.google.appengine.api.datastore.DatastoreServiceImpl.put(DatastoreServiceImpl.java: 151) at com.google.appengine.api.datastore.DatastoreServiceImpl.put(DatastoreServiceImpl.java: 131) at com.google.appengine.api.datastore.DatastoreServiceImpl.put(DatastoreServiceImpl.java: 123) at com.google.apphosting.runtime.jetty.SessionManager $AppEngineSession.save(SessionManager.java:162) at com.google.apphosting.runtime.jetty.SaveSessionFilter.doFilter(SaveSessionFilter.java: 41) at org.mortbay.jetty.servlet.ServletHandler $CachedChain.doFilter(ServletHandler.java:1084) at com.google.apphosting.utils.servlet.TransactionCleanupFilter.doFilter(TransactionCleanupFilter.java: 43) at org.mortbay.jetty.servlet.ServletHandler $CachedChain.doFilter(ServletHandler.java:1084) at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java: 360) at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java: 216) at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java: 181) at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java: 712) at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java: 405) at com.google.apphosting.runtime.jetty.AppVersionHandlerMap.handle(AppVersionHandlerMap.java: 238) at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java: 139) at org.mortbay.jetty.Server.handle(Server.java:313) at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java: 506) at org.mortbay.jetty.HttpConnection $RequestHandler.headerComplete(HttpConnection.java:830) at com.google.apphosting.runtime.jetty.RpcRequestParser.parseAvailable(RpcRequestParser.java: 76) at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:381) at com.google.apphosting.runtime.jetty.JettyServletEngineAdapter.serviceRequest(JettyServletEngineAdapter.java: 135) at com.google.apphosting.runtime.JavaRuntime.handleRequest(JavaRuntime.java: 235) at com.google.apphosting.base.RuntimePb$EvaluationRuntime $6.handleBlockingRequest(RuntimePb.java:5485) at com.google.apphosting.base.RuntimePb$EvaluationRuntime $6.handleBlockingRequest(RuntimePb.java:5483) at com.google.net.rpc.impl.BlockingApplicationHandler.handleRequest(BlockingApplicationHandler.java: 24) at
Re: [appengine-java] Re: DataStore Error 1000000 characters, but I'm not persisting
On Wed, Feb 10, 2010 at 1:30 PM, Jake jbrooko...@cast.org wrote: I've discovered my issue - Apache Wicket. Wicket has it's own Session that stores data in an ISessionStore. Normally, this is backed by a Disk, but can be backed with an HttpSession if set properly. The trick is that it stores a lot of state with each page, which I can change now that I know the issue - prior to this point, my pages were simple HTML. My new question is this: when does the HttpSession become persisted? Are setAttribute(), getAttribute() calls to HttpSession equivalent to datastore queries? No, we retrieve the session at the beginning of the request and persist it at the end. In that case, would I see a performance improvement using MemCache with the HttpSession as a fallback? HttpSession uses both memcache and datastore internally, so reads are going to be fast unless that particular session has been evicted from memcache, but mutating the session state will incur some additional latency at the end of the request due to a datastore put call. On Feb 10, 11:23 am, Don Schwarz schwa...@google.com wrote: How much data are you storing in your session? Currently, the serialized representation of a sessions contents must be the 1MB entity limit. On Tue, Feb 9, 2010 at 12:46 PM, Jake jbrooko...@cast.org wrote: Hello, I'm getting the following error: java.lang.IllegalArgumentException: string property _values is too long. It cannot exceed 100 characters. The trick is, I'm not persisting any Blobs and certainly none called _values. I do have one object with a Blob field, but I'm not persisting anything to that field to cause the above exception. Also, this is a new issue and that Blob has been in my application for awhile. All I'm doing is viewing pages that query the datastore. My admin panel doesn't show any quota issues. My newest change is that I'm uploading a 350K XML file (a book), applying some XSLT translation using Saxon and storing the result in an application variable, and displaying certain chunks of that file depending on the clicked page. I do have sessions enabled, which I fear is related, but I'm not sure how to resolve this. Thanks in advance for any help! Jake /titlepage java.lang.IllegalArgumentException: string property _values is too long. It cannot exceed 100 characters. at com.google.appengine.api.datastore.DatastoreApiHelper.translateError(DatastoreApiHelper.java: 33) at com.google.appengine.api.datastore.DatastoreApiHelper.makeSyncCall(DatastoreApiHelper.java: 60) at com.google.appengine.api.datastore.DatastoreServiceImpl $2.run(DatastoreServiceImpl.java:163) at com.google.appengine.api.datastore.TransactionRunner.runInTransaction(TransactionRunner.java: 30) at com.google.appengine.api.datastore.DatastoreServiceImpl.put(DatastoreServiceImpl.java: 151) at com.google.appengine.api.datastore.DatastoreServiceImpl.put(DatastoreServiceImpl.java: 131) at com.google.appengine.api.datastore.DatastoreServiceImpl.put(DatastoreServiceImpl.java: 123) at com.google.apphosting.runtime.jetty.SessionManager $AppEngineSession.save(SessionManager.java:162) at com.google.apphosting.runtime.jetty.SaveSessionFilter.doFilter(SaveSessionFilter.java: 41) at org.mortbay.jetty.servlet.ServletHandler $CachedChain.doFilter(ServletHandler.java:1084) at com.google.apphosting.utils.servlet.TransactionCleanupFilter.doFilter(TransactionCleanupFilter.java: 43) at org.mortbay.jetty.servlet.ServletHandler $CachedChain.doFilter(ServletHandler.java:1084) at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java: 360) at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java: 216) at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java: 181) at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java: 712) at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java: 405) at com.google.apphosting.runtime.jetty.AppVersionHandlerMap.handle(AppVersionHandlerMap.java: 238) at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java: 139) at org.mortbay.jetty.Server.handle(Server.java:313) at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java: 506) at org.mortbay.jetty.HttpConnection $RequestHandler.headerComplete(HttpConnection.java:830) at com.google.apphosting.runtime.jetty.RpcRequestParser.parseAvailable(RpcRequestParser.java: 76) at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:381) at