I use GAE for, among other things, a synchronization backend for my mobile app. The mobile app is designed to stay offline for long periods of time and then report everything that happened while it was offline to the GAE backend.
I "merge" this sync data into a user's data in an async task, with all the data being written in just one huge batch put and one huge batch delete, all within one transaction (a user's data is always contained within one entity group). So far this has been working well, according to appstats the transaction commit frequently takes many seconds (typically around 5) but just a few hundred MS in wall-clock time. What scares me a little is when a user has been very active, a sync can result in thousands (or even tens of thousands) of writes or deletes, and then the commit takes stomach-turning amounts of time, like in the 30 second range. Impressively, the wall-clock time is still under a second. My question is, is there some theoretical maximum for how many datastore ops can be squeezed into a single transaction within an async task? When asking the datastore to do a commit that takes a minute in "cpu-time", will it start timing out at some point? I haven't hit an upper ceiling yet, but if one exists I'd like to know about it. -- You received this message because you are subscribed to the Google Groups "Google App Engine" 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?hl=en.
