Hi all,

I'm trying to verify transactions behavior, and what I see is that commit() method never throws a JDOCanRetryException as explained in doc when the same entity group has being modified concurrently.
I always get a JDOException caused by ConcurrentModificationException.

My question is:
Is this pattern incorrect??
-------------------------------------

        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;
               
}
           
}
       
}
-------------------------


should it be modified this way??

-------------------------------------

        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 (JDOException ex) {
                if (!(ex.getCause() instanceof ConcurrentModificationException ) || i ==
(NUM_RETRIES - 1) {

                   
throw ex;
               
}
           
}
       
}
-------------------------

Please let me know

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 at http://groups.google.com/group/google-appengine-java?hl=en
-~----------~----~----~----~------~----~------~--~---



Reply via email to