среда, 28 октября 2009 г.

In Google App Engine "optimistic"

http://code.google.com/intl/pl/appengine/docs/java/datastore/transact...

Look at the next code snippet

===========
   for (int i = 0; i < NUM_RETRIES; i++) {
            pm.currentTransaction().begin();

            ClubMembers members = pm.getObjectById(ClubMembers.class,
"k12345");
            members.incrementCounterBy(1);

            try {
                pm.currentTransaction().commit();
                break;

            } catch (JDOCanRetryException ex) {
                if (i == (NUM_RETRIES - 1)) {
                    throw ex;
                }
            }
        }
============

In Google App Engine "optimistic" transaction model is applied. There
is no any "global block", every request starts transaction but only
one is allowed to run through it, the second and next get and
exception and should run some logic to handle this exception. Here it
tries to rerun the transaction (hoping that the first already has
finished it)  You can also return error message to the client and
enable switch "try again" or any other rescue plan.

Комментариев нет:

Отправить комментарий