Re: [appengine-java] Multiple transactions at the same time

2010-03-05 Thread Ikai L (Google)
It sounds to me like all of this should either be:

1. In a single transaction - but you'll want to question how important
this is. Distributed transactions are hard to do an expensive:
http://danielwilkerson.com/dist-trans-gae.html
2. Versioned objects: you update each set of objects with a version
and bump it up. You update an entity last with the newest version
number, and retrieve based on that number. This is not a
one-size-fits-all solution and will only work for some data sets.

On Wed, Mar 3, 2010 at 7:58 PM, DutrowLLC dutrow...@gmail.com wrote:
 I was hoping to have several transactions going at the same time and
 if anything failed in anyone of them, then I could roll back all of
 them.

 I set up some code to do this, looks something like the code below,
 there may be some other problems, but the one that I see is that what
 if there is an Exception thrown in the loop where I commit the
 transactions, then I've already committed some of them, but not
 others?  Is this not something that I should be doing?  If not, how
 should I handle this sort of situation?

 VectorTransaction txnVector = new VectorTransaction();
 DatastoreService ds;
 Transaction txn;

 try{
 ds = DatastoreServiceFactory.getDatastoreService();
 txn = ds.beginTransaction();
 txnVector.add(txn);
 ds.put( entity, txn );

 ds = DatastoreServiceFactory.getDatastoreService();
 txn = ds.beginTransaction();
 txnVector.add(txn);
 ds.put( entity2, txn );
 }
 // ROLL BACK IF THERE IS A PROBLEM
 catch( Exception e ){
   for( Transaction txn : txnVector ){
     if( txn.isActive() ){
       txn.rollback();
     }
   }
 }
 // COMMIT ALL
 for( Transaction txn : txnVector ){
  if( txn.IsActive() ){
   txn.commit();
  }
 }




 --
 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.





-- 
Ikai Lan
Developer Programs Engineer, Google App Engine
http://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.



[appengine-java] Multiple transactions at the same time

2010-03-03 Thread DutrowLLC
I was hoping to have several transactions going at the same time and
if anything failed in anyone of them, then I could roll back all of
them.

I set up some code to do this, looks something like the code below,
there may be some other problems, but the one that I see is that what
if there is an Exception thrown in the loop where I commit the
transactions, then I've already committed some of them, but not
others?  Is this not something that I should be doing?  If not, how
should I handle this sort of situation?

VectorTransaction txnVector = new VectorTransaction();
DatastoreService ds;
Transaction txn;

try{
ds = DatastoreServiceFactory.getDatastoreService();
txn = ds.beginTransaction();
txnVector.add(txn);
ds.put( entity, txn );

ds = DatastoreServiceFactory.getDatastoreService();
txn = ds.beginTransaction();
txnVector.add(txn);
ds.put( entity2, txn );
}
// ROLL BACK IF THERE IS A PROBLEM
catch( Exception e ){
   for( Transaction txn : txnVector ){
 if( txn.isActive() ){
   txn.rollback();
 }
   }
}
// COMMIT ALL
for( Transaction txn : txnVector ){
 if( txn.IsActive() ){
   txn.commit();
 }
}




-- 
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.