[jboss-svn-commits] JBL Code SVN: r27615 - in labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943: aspects and 6 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Mon Jul 6 07:59:04 EDT 2009


Author: whitingjr
Date: 2009-07-06 07:59:03 -0400 (Mon, 06 Jul 2009)
New Revision: 27615

Added:
   labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/isolation/TransactionStack.java
   labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/tracker/Read.java
   labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/tracker/Write.java
   labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/transaction/
   labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/transaction/compressor/
   labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/transaction/compressor/PostCommitTransactionMerger.java
Modified:
   labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/aspects/VersioningAspectImpl.java
   labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/impl/TransactionImpl.java
   labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/isolation/AbstractIsolation.java
   labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/isolation/ReadCommittedIsolationImpl.java
   labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/isolation/RepeatableReadIsolationImpl.java
   labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/spec/STMTransaction.java
   labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/tracker/AbstractTracker.java
Log:
UPdated.
Updated repeatable read isolation behaviour.

Modified: labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/aspects/VersioningAspectImpl.java
===================================================================
--- labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/aspects/VersioningAspectImpl.java	2009-07-06 11:57:43 UTC (rev 27614)
+++ labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/aspects/VersioningAspectImpl.java	2009-07-06 11:59:03 UTC (rev 27615)
@@ -48,6 +48,7 @@
       }
       // TODO: jrw do something
       // check whether a transaction is running
+      
       final Object readable = TransactionFactory.getCurrentTransaction().readField();
       
       // set the field with the value

Modified: labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/impl/TransactionImpl.java
===================================================================
--- labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/impl/TransactionImpl.java	2009-07-06 11:57:43 UTC (rev 27614)
+++ labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/impl/TransactionImpl.java	2009-07-06 11:59:03 UTC (rev 27615)
@@ -25,8 +25,10 @@
 public class TransactionImpl implements STMTransaction{
 
 	private volatile TransactionStatus status;
-	private final AtomicReferenceFieldUpdater<Transaction, TransactionStatus> statusModifier = AtomicReferenceFieldUpdater.newUpdater(Transaction.class, TransactionStatus.class, "statusModifier");
+	private final AtomicReferenceFieldUpdater<Transaction, TransactionStatus> statusModifier = AtomicReferenceFieldUpdater.newUpdater(Transaction.class, TransactionStatus.class, "status");
 	private static final ThreadLocal<TransactionImpl> currentLocalTransaction = new ThreadLocal<TransactionImpl>();
+	private final 
+	
 
 	@Override
 	public void commit() {

Modified: labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/isolation/AbstractIsolation.java
===================================================================
--- labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/isolation/AbstractIsolation.java	2009-07-06 11:57:43 UTC (rev 27614)
+++ labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/isolation/AbstractIsolation.java	2009-07-06 11:59:03 UTC (rev 27615)
@@ -4,8 +4,8 @@
 
 public abstract class AbstractIsolation implements Isolation {
 
-	protected History readhistory;
-	protected History writeHistory;
+	protected final History readhistory;
+	protected final History writeHistory;
 	
 	@Override
 	public History getReadHistory() {
@@ -25,4 +25,8 @@
 	public void setWriteHistory(History history) {
 		writeHistory = history;
 	}
+	
+	public abstract Object read();
+	
+	public abstract Object write(Object newObject);
 }

Modified: labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/isolation/ReadCommittedIsolationImpl.java
===================================================================
--- labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/isolation/ReadCommittedIsolationImpl.java	2009-07-06 11:57:43 UTC (rev 27614)
+++ labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/isolation/ReadCommittedIsolationImpl.java	2009-07-06 11:59:03 UTC (rev 27615)
@@ -2,7 +2,7 @@
 
 import uk.ac.ncl.sdia.a8905943.spec.History;
 
-public class ReadCommittedIsolationImpl implements Isolation {
+public class ReadCommittedIsolationImpl extends AbstractIsolation{
 
 	@Override
 	public History getReadHistory() {
@@ -41,4 +41,18 @@
 		return false;
 	}
 
+   @Override
+   public Object read()
+   {
+      // FIXME read
+      return null;
+   }
+
+   @Override
+   public Object write(Object newObject)
+   {
+      // FIXME write
+      return null;
+   }
+
 }

Modified: labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/isolation/RepeatableReadIsolationImpl.java
===================================================================
--- labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/isolation/RepeatableReadIsolationImpl.java	2009-07-06 11:57:43 UTC (rev 27614)
+++ labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/isolation/RepeatableReadIsolationImpl.java	2009-07-06 11:59:03 UTC (rev 27615)
@@ -1,47 +1,64 @@
 package uk.ac.ncl.sdia.a8905943.isolation;
 
-import uk.ac.ncl.sdia.a8905943.spec.History;
+import java.util.HashMap;
+import java.util.Map;
 
-public class RepeatableReadIsolationImpl implements Isolation {
+/**
+ * This object defines the behaviour for reads and writes for a
+ * transaction with RepeatableRead isolation. After initial 
+ * value read (or written?) any concurrent changes will not be visible to 
+ * this transaction.
+ * 
+ * @author <a href="whitingjr at hotmail.com">Jeremy Whiting</a>
+ * @version $Revision: 1.1 $
+ */
+public final class RepeatableReadIsolationImpl extends AbstractIsolation{
 
-	@Override
-	public History getReadHistory() {
-		// TODO Auto-generated method stub
-		return null;
-	}
+   // fast lookups
+   protected final Map<Long, Object> reads = new HashMap<Long, Object>();
+   protected final Map<Long, Object> writes = new HashMap<Long, Object>();
 
 	@Override
-	public void setReadHistory(History history) {
-		// TODO Auto-generated method stub
-
-	}
-
-	@Override
 	public boolean supportsRepeatableRead() {
-		// TODO Auto-generated method stub
-		return false;
+		return true;
 	}
 
-
    @Override
-   public History getWriteHistory()
+   public boolean supportsWriteSkew()
    {
-      // FIXME getWriteHistory
-      return null;
+      return false;
    }
 
+   /**
+    * Read the value requested. First check for version previously read and
+    * return it. If not found then read the shared value, add to have read list.
+    */
    @Override
-   public void setWriteHistory(History history)
+   public Object read(Long lookupIdentity)
    {
-      // FIXME setWriteHistory
-      
+      Object returnValue = null;
+      /* check for the value initially in the writes, then reads otherwise
+       * retrieve the shared version*/
+      if (writes.containsKey(lookupIdentity))
+      {// found
+         returnValue = writes.get(lookupIdentity);
+      }
+      else if (reads.containsKey(lookupIdentity))
+      {
+         returnValue = writes.get(lookupIdentity);
+      }
+      else
+      {// not found in this transaction, read shared value
+         
+      }
+      return null;
    }
 
    @Override
-   public boolean supportsWriteSkew()
+   public Object write(Object newObject)
    {
-      // FIXME supportsWriteSkew
-      return false;
+      // FIXME write
+      return null;
    }
 
 }

Added: labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/isolation/TransactionStack.java
===================================================================
--- labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/isolation/TransactionStack.java	                        (rev 0)
+++ labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/isolation/TransactionStack.java	2009-07-06 11:59:03 UTC (rev 27615)
@@ -0,0 +1,24 @@
+/*
+ * JBoss, the OpenSource J2EE webOS
+ * 
+ * Distributable under LGPL license.
+ * See terms of license at gnu.org.
+ */
+package uk.ac.ncl.sdia.a8905943.isolation;
+
+
+/**
+ * This object represents transactions that are joined. As a transaction joins a new
+ * (nested) transaction it is pushed down the stack. The transaction with the deepest 
+ * nesting is a the bottom. This means the "top level" transaction is at the bottom.
+ * This class encapsulates behaviour for the interaction between transactions when
+ * reads and writes occur and how they effect transactions as updates bubble up. 
+ * 
+ * @author <a href="whitingjr at hotmail.com">Jeremy Whiting</a>
+ * @version $Revision: 1.1 $
+ */
+public class TransactionStack
+{
+
+   // TODO: jrw do something here
+}

Modified: labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/spec/STMTransaction.java
===================================================================
--- labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/spec/STMTransaction.java	2009-07-06 11:57:43 UTC (rev 27614)
+++ labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/spec/STMTransaction.java	2009-07-06 11:59:03 UTC (rev 27615)
@@ -17,7 +17,7 @@
  */
 public interface STMTransaction extends Transaction
 {
-   public STMTransaction readField();
-   public STMTransaction writeField();
+   public Object readField();
+   public Object writeField();
    
 }

Modified: labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/tracker/AbstractTracker.java
===================================================================
--- labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/tracker/AbstractTracker.java	2009-07-06 11:57:43 UTC (rev 27614)
+++ labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/tracker/AbstractTracker.java	2009-07-06 11:59:03 UTC (rev 27615)
@@ -5,7 +5,7 @@
 
 public abstract class AbstractTracker implements Tracker {
 
-	protected AbstractTracker(Isolation isolation) {
+	public AbstractTracker(Isolation isolation) {
 	}
 
 }

Added: labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/tracker/Read.java
===================================================================
--- labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/tracker/Read.java	                        (rev 0)
+++ labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/tracker/Read.java	2009-07-06 11:59:03 UTC (rev 27615)
@@ -0,0 +1,49 @@
+/*
+ * JBoss, the OpenSource J2EE webOS
+ * 
+ * Distributable under LGPL license.
+ * See terms of license at gnu.org.
+ */
+package uk.ac.ncl.sdia.a8905943.tracker;
+
+import javax.transaction.xa.Xid;
+
+import dstm2.Transaction;
+
+public class Read extends AbstractTracker
+{
+
+   public Read()
+   {
+      // FIXME Read constructor
+
+   }
+   @Override
+   public void auditRead()
+   {
+      // FIXME auditRead
+
+   }
+
+   @Override
+   public void auditWrite()
+   {
+      // FIXME auditWrite
+
+   }
+
+   @Override
+   public void discardHistory(Transaction transaction)
+   {
+      // FIXME discardHistory
+
+   }
+
+   @Override
+   public void discardHistory(Xid xid)
+   {
+      // FIXME discardHistory
+
+   }
+
+}

Added: labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/tracker/Write.java
===================================================================
--- labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/tracker/Write.java	                        (rev 0)
+++ labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/tracker/Write.java	2009-07-06 11:59:03 UTC (rev 27615)
@@ -0,0 +1,52 @@
+/*
+ * JBoss, the OpenSource J2EE webOS
+ * 
+ * Distributable under LGPL license.
+ * See terms of license at gnu.org.
+ */
+package uk.ac.ncl.sdia.a8905943.tracker;
+
+import javax.transaction.xa.Xid;
+
+import uk.ac.ncl.sdia.a8905943.isolation.Isolation;
+
+import dstm2.Transaction;
+
+public class Write extends AbstractTracker
+{
+
+   public Write(Isolation isolation)
+   {
+      // FIXME Write constructor
+      super(isolation);
+   }
+
+   @Override
+   public void auditRead()
+   {
+      // FIXME auditRead
+
+   }
+
+   @Override
+   public void auditWrite()
+   {
+      // FIXME auditWrite
+
+   }
+
+   @Override
+   public void discardHistory(Transaction transaction)
+   {
+      // FIXME discardHistory
+
+   }
+
+   @Override
+   public void discardHistory(Xid xid)
+   {
+      // FIXME discardHistory
+
+   }
+
+}

Added: labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/transaction/compressor/PostCommitTransactionMerger.java
===================================================================
--- labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/transaction/compressor/PostCommitTransactionMerger.java	                        (rev 0)
+++ labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/main/java/uk/ac/ncl/sdia/a8905943/transaction/compressor/PostCommitTransactionMerger.java	2009-07-06 11:59:03 UTC (rev 27615)
@@ -0,0 +1,23 @@
+/*
+ * JBoss, the OpenSource J2EE webOS
+ * 
+ * Distributable under LGPL license.
+ * See terms of license at gnu.org.
+ */
+package uk.ac.ncl.sdia.a8905943.transaction.compressor;
+
+import uk.ac.ncl.sdia.a8905943.spec.STMTransaction;
+
+public class PostCommitTransactionMerger
+{
+
+   public PostCommitTransactionMerger()
+   {
+
+   }
+   public void update( STMTransaction upper, STMTransaction lower  )
+   {
+      
+   }
+   
+}




More information about the jboss-svn-commits mailing list