Can you give an example? Because that approach would seem to be unreliable in a two-writer scenario.
On Jul 26, 2011, at 10:11 PM, Robert Kluin wrote: > Well, I generally put revision numbers on my entities. In my > transctions, before the update, I check that the revision number > currently on the entity matches what I expect. If it doesn't then I > know the update is out-of-date. > > There are other solutions too, depending on the app and data model. > > > Robert > > > > On Tue, Jul 26, 2011 at 15:03, Joshua Smith <[email protected]> wrote: >> On this topic, nobody ever answered this question: >> >> http://code.google.com/appengine/docs/python/datastore/transactions.html >> >> First it says, "Make sure your transactions are idempotent" and then it >> gives an example which isn't. >> >> I'm not sure it's possible to do the task in that example correctly if you >> cannot tell whether a transaction succeeded or failed when it throws an >> exception. I just tried sketching out a solution that stored a transaction >> ID in the model, but that won't work because there could be multiple >> writers. The whole thing seems rather intractable, and the idea that you >> cannot tell whether a transaction succeeded or failed violates the principle >> of least surprise for anyone who's ever used a database! >> >> Can some googlers weigh in, and explain how, for example, the example in the >> documentation could be implemented correctly? >> >> >> So, can you? >> I think that the idea of making transactions idempotent is nonsense. I >> don't think it is going to be possible in many cases. >> Either you support transactions, or you don't. By my reading, GAE doesn't. >> -Joshua >> On Jul 26, 2011, at 3:40 PM, Jose Montes de Oca wrote: >> >> Hi Pol, >> What this meas is that even if a transaction throws an exception this does >> not means the transaction failed, thats why you need to make your datastore >> transaction idempotent. So if you retry a transaction because it throws an >> exception, your transaction needs to "check" if the last >> transaction committed successfully or not. >> Best, >> Jose Montes de Oca >> -- >> You received this message because you are subscribed to the Google Groups >> "Google App Engine" group. >> To view this discussion on the web visit >> https://groups.google.com/d/msg/google-appengine/-/bm54SrfYFdAJ. >> 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. >> > > -- > 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.
