Thanks Ikai, that link was very helpful. On Apr 8, 6:01 pm, "Ikai L (Google)" <ika...@google.com> wrote: > Oops. Link is here: > > http://gae-java-persistence.blogspot.com/2009/10/optimistic-locking-w... > > On Thu, Apr 8, 2010 at 10:00 AM, Ikai L (Google) <ika...@google.com> wrote: > > > > > > > Here's a blog post Max Ross wrote about optimistic locking using built in > > features of JDO/JPA > > > On Thu, Apr 8, 2010 at 2:42 AM, mscwd01 <mscw...@gmail.com> wrote: > > >> Thanks John. So basically the process should be: > > >> - Query for the object inside a transaction > >> - Update the object counter > >> - Commit > > >> - If commit fails - re-query the datastore for the same object? > > >> Is it possible to just catch the exception and try committing the > >> object again or will I have to query the datastore for the object > >> again? > > >> Also will it work when you query for a parent object and then update > >> the counter of a child object? > > >> Thanks again. > > >> On Apr 8, 10:33 am, John Patterson <jdpatter...@gmail.com> wrote: > >> > You will need to read and update the object in a transaction which > >> > will throw an exception on commit if another thread updates the same > >> > entity. You can then refresh the object and try again. Also look > >> > into memcache which has an atomic counter increment method that is > >> > much faster than reading and writing to the datastore. The downside > >> > is that the counts could be reset so you may need to periodically > >> > store them in the datastore. > > >> > On 8 Apr 2010, at 16:17, mscwd01 wrote: > > >> > > Hey, > > >> > > How do you ensure, once you have queried an object from the datastore, > >> > > that another call to that object cannot be made? > >> > > I basically have a bunch of objects with counters which get > >> > > incremented during each call to that object. > > >> > > What I need to ensure is the object doesn't get called by two threads, > >> > > each of which increment the counter by 1 and persist the object back > >> > > to the datastore, only for the counter to be incremented by 1 and not > >> > > by 2. > > >> > > Thanks > > >> > > -- > >> > > 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<google-appengine-java%2B > >> unsubscr...@googlegroups.com> > >> > > . > >> > > For more options, visit this group athttp:// > >> groups.google.com/group/google-appengine-java?hl=en > >> > > . > > >> -- > >> 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-j...@googlegroups.com. > >> To unsubscribe from this group, send email to > >> google-appengine-java+unsubscr...@googlegroups.com<google-appengine-java%2B > >> unsubscr...@googlegroups.com> > >> . > >> For more options, visit this group at > >>http://groups.google.com/group/google-appengine-java?hl=en. > > > -- > > Ikai Lan > > Developer Programs Engineer, Google App Engine > >http://googleappengine.blogspot.com|http://twitter.com/app_engine > > -- > Ikai Lan > Developer Programs Engineer, Google App > Enginehttp://googleappengine.blogspot.com|http://twitter.com/app_engine
-- 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-j...@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.