[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