Hi,
I'm using the low level data-store api to delete entities. Here is my
code:
private int deleteEntities(String kind, String from, String to, int
limit) {
Query q = createKeyPrefixQuery(kind, from, to);
q.setKeysOnly();
ArrayList<Key> keys = new ArrayList<Key>(limit);
Iterable<Entity> entities = datastore.prepare(q).asIterable(
FetchOptions.Builder.withLimit(limit));
for (Entity e : entities) {
keys.add(e.getKey());
}
datastore.delete(keys);
return keys.size();
}
I'm using a limit of 100 and delete around 50000 entities in a row
(100 entity chunks)
It works fine 99% of the time but sometimes i'm getting this:
com.google.appengine.api.datastore.DatastoreFailureException: internal
error.
at
com.google.appengine.api.datastore.DatastoreApiHelper.translateError(DatastoreApiHelper.java:
51)
at
com.google.appengine.api.datastore.DatastoreApiHelper.makeSyncCall(DatastoreApiHelper.java:
67)
at com.google.appengine.api.datastore.DatastoreServiceImpl
$3.run(DatastoreServiceImpl.java:250)
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
com.scarabresearch.recserver.dao.gae.GAEPersistence.deleteEntities(GAEPersistence.java:
310)
I wait and retry a couple of times which helps but sometimes after a
couple of minutes of retrying i still could not delete the entities.
How can i make this more reliable?
Thanks
Gyorgy
--
You received this message because you are subscribed to the Google Groups
"Google App Engine for Java" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/google-appengine-java?hl=en.