After creating the ROTModel (retry on timeout Model) for gaeutiltiies,
I learned the functionality I implemented was actually put into the
base datastore API. If a write failed, it retries the write a few
times before raising the Timeout exception if it continues to fail. In
the trunk for gaeutiltiies, nothing uses ROTModel now.

With the knowledge that the Datastore API automatically did the
retries, and timeouts persisted, I managed to get session writes to
get more reliability for writes by writing to both memcache and the
datastore and tracking the state of both. If the datastore write
fails, it will be pushed from memcache the next time the variable is
read. This works great.

However, I have seen instances where Timeout on read causes issued.

Call session()[key]
Memcache miss
Timeout on Datastore read

No way around that. The datastore is the only persistent layer
available to appengine applications (within the appengine framework).
I've seen this exact instance more than once, as the sole use of my
app. It doesn't happen often, but a few times in a month for a single
user doesn't bode well for instances where an app may have many more
users. I'm curious if read is doing the retries, or if I should try to
add that in the session?

The only other option left is declare the datastore not reliable
enough for session level programming and looking for alternatives. The
root of the problem is that the datastore has timeouts more often than
what would be acceptable for any database solution that would be
hosted in house. It's been repeatedly stated by Google that this will
not be fixed. IMHO, it might be time to revisit that statement and
determine if more reliability can be introduced to the only persistent
data layer appengine offers.
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To post to this group, send email to google-appengine@googlegroups.com
To unsubscribe from this group, send email to 
google-appengine+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to