Jeff,
We are getting a DatastoreTimeoutException when we try to iterate over
some 6 million rows of a certain kind. This is executing in a B4
backend. One interesting note is that the exception is thrown exactly
1 minute into the query. The ofy deadline has not been changed from
the default (tried setting to null as well). Also of note, we are
able to iterate over the the same set using the datastore api
directly. What is be correct way to iterate over a large set of
entities using ofy? What would cause the timeout at exactly 1 minute?
Thanks, scott
The code that generates the exception is:
for (Group group : ofy.query("Group.class").chunkSize(500))
oldGroups.put(group.groupId,
group.id);
The exception is:
com.tempusnova.lib.servlet.BaseServlet service: The datastore
operation timed out, or the data was temporarily unavailable.
com.google.appengine.api.datastore.DatastoreTimeoutException: The
datastore operation timed out, or the data was temporarily
unavailable.
at
com.google.appengine.api.datastore.DatastoreApiHelper.translateError(DatastoreApiHelper.java:
46)
at com.google.appengine.api.datastore.DatastoreApiHelper
$1.convertException(DatastoreApiHelper.java:76)
at
com.google.appengine.api.utils.FutureWrapper.get(FutureWrapper.java:
106)
at
com.google.appengine.api.datastore.FutureHelper.getInternal(FutureHelper.java:
72)
at
com.google.appengine.api.datastore.FutureHelper.quietGet(FutureHelper.java:
33)
at
com.google.appengine.api.datastore.QueryResultsSourceImpl.loadMoreEntities(QueryResultsSourceImpl.java:
86)
at
com.google.appengine.api.datastore.QueryResultsSourceImpl.loadMoreEntities(QueryResultsSourceImpl.java:
73)
at
com.google.appengine.api.datastore.QueryResultIteratorImpl.ensureLoaded(QueryResultIteratorImpl.java:
156)
at
com.google.appengine.api.datastore.QueryResultIteratorImpl.hasNext(QueryResultIteratorImpl.java:
65)
at
com.googlecode.objectify.util.TranslatingIterator.hasNext(TranslatingIterator.java:
29)
at
com.googlecode.objectify.util.QueryResultIteratorWrapper.hasNext(QueryResultIteratorWrapper.java:
31)