Yes it was. :)
Robert On Wed, Jul 14, 2010 at 5:49 PM, Chris Copeland <[email protected]> wrote: > > On Wed, Jul 14, 2010 at 3:54 PM, Sam <[email protected]> wrote: >> >> I believe all that it would do is >> move the timing issue from the main program logic to a defined >> transaction and we would still have the potential gap in time between >> when the initial query was executed to fetch the data and the put() >> was execute to write it back. > > If the data fetched by the get() at the first of the transaction has been > changed (by another process) when you do the put() at the end of the > transaction, then the transaction will be retried and it will do a new get > which will see the other process's changes and the process repeats. This > isn't obvious, but it is talked about in one of the links I sent earlier. > > I think Robert's example is missing a put() at the end of the transaction > function: > > def txn(): > ccode = CCode.all().filter('Assinged', 0)\ > .filter('ExpireDate >=', dtCompareDate)\ > .filter("PartnerID", intPartnerID).get() > if not ccode: > # handle no ccode.... > ccode.SessionID = strSessionID > ccode.Assigned = 1 > ccode.put() > > db.run_in_transaction(txn) > > > -Chris > > -- > 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. > -- 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.
