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 <[email protected]> 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 [email protected]
> > .
> > To unsubscribe from this group, send email to 
> > [email protected]
> > .
> > 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 [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-java?hl=en.

Reply via email to