Hi James, what you see is a combination of two things: (a) indexes are eventually consistent - meaning that there is a lag between writing and them reflecting the current state and (b) replication which also happens to be eventual consistent meaning that not all replicas have the same state. Each replica (datacenter) has a complete copy of all your data AND all your indexes. When you do a query that query will hit exactly one (randomly choosen) datacenter (replica). So your result set might be stale because that replica hasn't yet applied all your writes. The next query may give you a very different result because it hits another replica.
I've experienced inconsistencies for more than 12 hours which isn't the regular case though. At least 99.9% of the time inconsistencies will last for less than a second. But sometimes after REALLY heavy updates (a couple 100K writes within minutes) I've seen a small portion of entities remaining stale for hours. >From what I've seen, most of the time an inconsistency will instantly vanish (on all replicas) as soon as you access the stale entity group consistently (doing a GET). The datastore detects the inconsistency and applies the writes that are still pending on some replica. Never will a consistent operation (like GET) give you a stale result (provided you haven't changed your read policy to inconsistent). Wolfram -- You received this message because you are subscribed to the Google Groups "Google App Engine" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at http://groups.google.com/group/google-appengine. For more options, visit https://groups.google.com/groups/opt_out.
