[jboss-svn-commits] JBL Code SVN: r30942 - labs/jbosstm/workspace/whitingjr/trunk/performance/src/test/java/org/jboss/jbossts/performance/resource.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Tue Jan 5 13:12:27 EST 2010


Author: whitingjr
Date: 2010-01-05 13:12:27 -0500 (Tue, 05 Jan 2010)
New Revision: 30942

Modified:
   labs/jbosstm/workspace/whitingjr/trunk/performance/src/test/java/org/jboss/jbossts/performance/resource/SynchronizeTask.java
Log:
Modified to notify the barrier when failure occurs. 


Modified: labs/jbosstm/workspace/whitingjr/trunk/performance/src/test/java/org/jboss/jbossts/performance/resource/SynchronizeTask.java
===================================================================
--- labs/jbosstm/workspace/whitingjr/trunk/performance/src/test/java/org/jboss/jbossts/performance/resource/SynchronizeTask.java	2010-01-05 18:11:47 UTC (rev 30941)
+++ labs/jbosstm/workspace/whitingjr/trunk/performance/src/test/java/org/jboss/jbossts/performance/resource/SynchronizeTask.java	2010-01-05 18:12:27 UTC (rev 30942)
@@ -1,6 +1,6 @@
 package org.jboss.jbossts.performance.resource;
 
-import java.util.concurrent.CyclicBarrier;
+ import java.util.concurrent.CyclicBarrier;
 
 import javax.persistence.EntityManager;
 import javax.persistence.EntityManagerFactory;
@@ -17,21 +17,31 @@
 import auction.dao.ejb3.persistence.UserDAOBeanMultiResource;
 import auction.model.User;
 
+/**
+ * This is the task that will.
+ * A SynchronizeTask.
+ * 
+ * @author <a href="jwhiting at redhat.com">Jeremy Whiting</a>
+ * @version $Revision: 1.1 $
+ */
 public class SynchronizeTask implements Runnable
 {
    private final EntityManagerFactory emfA;
    private final EntityManagerFactory emfB;
-   private final boolean isOptionalWriteEnabled = false;
+   private final boolean isOptionalWriteEnabled;
    private final int recurseCount;
    private final static Logger logger = Logger.getLogger(SynchronizeTask.class);
    private final CyclicBarrier completionBarrier;
+   private final Long threadId;
    
-   public SynchronizeTask(final EntityManagerFactory factoryA, final EntityManagerFactory factoryB, final int count, final CyclicBarrier barrier)
+   public SynchronizeTask(final EntityManagerFactory factoryA, final EntityManagerFactory factoryB, final int count, final CyclicBarrier barrier, final int id, final boolean isWEnabled)
    {
       this.emfA = factoryA;
       this.emfB = factoryB;
       this.recurseCount = count;
       this.completionBarrier = barrier;
+      this.threadId = new Long(id);
+      this.isOptionalWriteEnabled = isWEnabled;
    }
    @Override
    public void run()
@@ -40,7 +50,10 @@
       {
          this.completionBarrier.await();// await all threads ready to start
          recurse(this.recurseCount);
-         this.completionBarrier.await();// await all threads have finished 
+         if (!this.completionBarrier.isBroken())
+         {// fall out of thread without waiting.
+            this.completionBarrier.await();// await all threads have finished
+         }
       }
       catch (Exception e)
       {
@@ -60,11 +73,9 @@
          TransactionLocal session = new TransactionLocal();
          
          transaction.registerSynchronization(new SessionSynchronization(emA, transaction, true));
-         
          transaction.registerSynchronization(new SessionSynchronization( emB, transaction, true  ) );
          
-         session.set(emB);
-         emB.joinTransaction();
+         //emB.joinTransaction();
 
          /**
           * A read
@@ -77,15 +88,17 @@
          userDAO_B.setEntityManagerB(emB);
    
          // Prepare a user object
-         User user = userDAO_A.findById(1l, false); 
+         User user = userDAO_A.findById(this.threadId, false); 
    
          long time = System.currentTimeMillis();
+         session.set(emA);
          if (this.isOptionalWriteEnabled)
          {
             user.setFirstname("Ben"+time);
          }
+         session.set(emB);
          // Don't forget to take the return value, this is basically a merge()
-         User userB = userDAO_B.findById(1l, false);
+         User userB = userDAO_B.findById(this.threadId, false);
          userB.setFirstname("Ben"+time);
          emA.flush();
          emB.flush();
@@ -96,10 +109,14 @@
       }
       catch (HibernateException e) {
          Assert.fail(e.getMessage());
+         this.completionBarrier.reset();
+         throw e;
       }
       catch (PersistenceException pe)
       {
-         Assert.fail(pe.getMessage());         
+         Assert.fail(pe.getMessage());
+         this.completionBarrier.reset();
+         throw pe;
       }
       finally 
       {
@@ -123,6 +140,7 @@
             }
          } catch (Exception e)
          {
+            this.completionBarrier.reset();
             Assert.fail(e.getMessage(), e);
          }
       }



More information about the jboss-svn-commits mailing list