Failed to load from the backing store - EOFException

1,048 views
Skip to first unread message

NightHawk

unread,
Feb 23, 2012, 5:34:06 AM2/23/12
to Google App Engine
Hi,

In development mode I got the exception below and now i'm unable to
load my database. This is serious as now I cannot load my test
database (with lot's of data) and I have my test environment broken.

Is the DB corrupt?
What can I do to recover the data i have in the database?
What should I do to prevent this from happening again?

Failed to load from the backing store, C:\...\war\WEB-INF\appengine-
generated\local_db.bin
java.io.EOFException
at java.io.ObjectInputStream
$BlockDataInputStream.peekByte(ObjectInputStream.java:2553)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1296)
at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:
1946)
at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:
1870)
at
java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:
1752)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1328)
at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:
1946)
at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:
1870)
at
java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:
1752)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1328)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:350)
at java.util.ArrayList.readObject(ArrayList.java:593)
at sun.reflect.GeneratedMethodAccessor15.invoke(Unknown Source)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:
25)
at java.lang.reflect.Method.invoke(Method.java:597)
at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:
974)
at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:
1848)
at
java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:
1752)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1328)
at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:
1946)
at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:
1870)
at
java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:
1752)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1328)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:350)
at java.util.HashMap.readObject(HashMap.java:1030)
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 java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:
974)
at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:
1848)
at
java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:
1752)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1328)
at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:
1946)
at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:
1870)
at
java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:
1752)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1328)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:350)
at java.util.HashMap.readObject(HashMap.java:1030)
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 java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:
974)
at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:
1848)
at
java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:
1752)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1328)
at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:
1946)
at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:
1870)
at
java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:
1752)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1328)
at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:
1946)
at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:
1870)
at
java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:
1752)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1328)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:350)
at java.util.HashMap.readObject(HashMap.java:1030)
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 java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:
974)
at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:
1848)
at
java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:
1752)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1328)
at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:
1946)
at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:
1870)
at
java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:
1752)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1328)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:350)
at
com.google.appengine.api.datastore.dev.LocalDatastoreService.load(LocalDatastoreService.java:
1412)
at
com.google.appengine.api.datastore.dev.LocalDatastoreService.start_(LocalDatastoreService.java:
427)
at com.google.appengine.api.datastore.dev.LocalDatastoreService.access
$300(LocalDatastoreService.java:122)
at com.google.appengine.api.datastore.dev.LocalDatastoreService
$1.run(LocalDatastoreService.java:420)
at java.security.AccessController.doPrivileged(Native Method)
at
com.google.appengine.api.datastore.dev.LocalDatastoreService.start(LocalDatastoreService.java:
418)
at
com.google.appengine.tools.development.ApiProxyLocalImpl.startServices(ApiProxyLocalImpl.java:
562)
at com.google.appengine.tools.development.ApiProxyLocalImpl.access
$700(ApiProxyLocalImpl.java:46)
at com.google.appengine.tools.development.ApiProxyLocalImpl
$2.run(ApiProxyLocalImpl.java:544)
at com.google.appengine.tools.development.ApiProxyLocalImpl
$2.run(ApiProxyLocalImpl.java:542)
at java.security.AccessController.doPrivileged(Native Method)
at
com.google.appengine.tools.development.ApiProxyLocalImpl.getService(ApiProxyLocalImpl.java:
541)
at
com.google.apphosting.utils.servlet.DatastoreViewerServlet.getSchema(DatastoreViewerServlet.java:
152)
at
com.google.apphosting.utils.servlet.DatastoreViewerServlet.doGetDatastoreViewer(DatastoreViewerServlet.java:
236)
at
com.google.apphosting.utils.servlet.DatastoreViewerServlet.doGet(DatastoreViewerServlet.java:
204)
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.tools.development.HeaderVerificationFilter.doFilter(HeaderVerificationFilter.java:
35)
at org.mortbay.jetty.servlet.ServletHandler
$CachedChain.doFilter(ServletHandler.java:1157)
at
com.google.appengine.api.blobstore.dev.ServeBlobFilter.doFilter(ServeBlobFilter.java:
58)
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
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.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:351)
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)

Simon Knott

unread,
Feb 23, 2012, 5:54:08 AM2/23/12
to google-a...@googlegroups.com
Hi,

You need to create scripts to populate and backup your local dev database, as every time they release a new SDK it tends to break the compatibility of the datastore.  

If you have a production version of the application, you can use the Remote API to pull data from that app into your local dev environment.

Cheers,
Simon

Nico Verwer

unread,
Apr 12, 2013, 7:22:46 AM4/12/13
to google-a...@googlegroups.com
Support for appengine has moved from this group to Stackoverflow. The only difference, as far as I have noticed, is that in this group it is guaranteed that nobody from Google will read questions and answer them. On Stackoverflow, ... well....

I asked this question on Stackoverflow, and gave a possible answer that worked for me. It would be interesting to see if what I did works for you as well. Please comment (not here) so others can benefit from it as well.

Vinny P

unread,
Apr 12, 2013, 11:09:10 AM4/12/13
to google-a...@googlegroups.com
Hello Ralph,

Is there a particular reason why you need the production database to test? Where I work, our production services contain confidential data, so we generate dummy data from a script (similar to this: http://www.generatedata.com/#about ). Also it's much faster than using the Remote API. 

If you need your production database, we can try something else: perhaps your db is getting corrupted because of its location. You can move the location of local_db.bin by specifying a system property: https://groups.google.com/forum/?fromgroups=#!topic/maven-gae-plugin/V3MrpRYu6oE . Try moving it entirely outside of your dev folders, see if that helps you. If not, you can always try backing up the .bin file and restoring it whenever it gets corrupted. 

-----------------
-Vinny P
Technology & Media Advisor
Chicago, IL

@GOV on AppDotNet: https://alpha.app.net/gov


On Friday, April 12, 2013 3:07:15 AM UTC-5, Ralph Brecheisen wrote:
Hi,

I already use the approach suggested by Simon. I download the production database and upload it into the local development environment using Remote API. Right after I do this everything works fine. However, after restarting the local server a few times, for some reason, the local_db.bin gets corrupted or something and it fails to load with the above-described EOFException. If I re-import the database again with Remote API all is well again.

I know this error occurs when I upgrade the App Engine version (I'm now at 1.7.6). This annoying but ok... However, the error also occurs without switching versions and that is a bit more than annoying because it really slows down my development cycles.

Any solutions or comments on how why this happens and what's the best way to deal with it?

Grtz,

Ralph


On Friday, December 14, 2012 1:24:41 PM UTC+1, Nico Verwer wrote:
I am having the same problem since I switched to the HRD datastore in my development environment.
Every time the local appengine starts up, this happens, even when there has not been an update of the appengine jar-files.
I am using version 1.7.2.1 of the appengine SDK.

If anyone has a solution, it would be great if they could post it here.
Reply all
Reply to author
Forward
0 new messages