On Tue, Oct 18, 2011 at 9:07 AM, David Gay (Google) <d...@google.com> wrote: > > One other consideration: XG transactions do not work on master/slave. > While the default could be different depending on whether HRD is used, > that definitely has drawbacks.
How can I detect if running on HRD vs M/S? I don't see anything on SystemProperty. I could try starting an XG transaction and catching the exception, but that would add an extra RPC to every Objectify app's startup time :-( The XG issue seems pretty easily solved by documentation: 1) If you're running on M/S, you can only use one entity group in a txn. 2) If you're running on HRD, you can use up to 5 entity groups in a txn. 2a) If you use multiple entity groups in a txn, this is implemented with 2pc and may produce surprising effects like ConcurrentModificationException on read. This doesn't really matter in practice if you use the RepeatInTransaction pattern. Put it this way: Non-ancestor queries work funky on the HRD too. Yet I don't need to set a special flag just to issue non-ancestor queries. Understanding eventual consistency and exotic transaction behavior is just part of working with GAE. Magic flags that enable otherwise expected behavior don't really help. Jeff -- 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 google-appengine-java@googlegroups.com. To unsubscribe from this group, send email to google-appengine-java+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-appengine-java?hl=en.