Author: manik.surtani(a)jboss.com
Date: 2008-07-11 13:01:51 -0400 (Fri, 11 Jul 2008)
New Revision: 6251
Modified:
core/trunk/src/main/java/org/jboss/cache/NodeFactory.java
core/trunk/src/main/java/org/jboss/cache/mvcc/ReadCommittedNode.java
core/trunk/src/main/java/org/jboss/cache/mvcc/RepeatableReadNode.java
Log:
Do we actualy need data versions with MVCC?
Modified: core/trunk/src/main/java/org/jboss/cache/NodeFactory.java
===================================================================
--- core/trunk/src/main/java/org/jboss/cache/NodeFactory.java 2008-07-11 15:46:23 UTC (rev
6250)
+++ core/trunk/src/main/java/org/jboss/cache/NodeFactory.java 2008-07-11 17:01:51 UTC (rev
6251)
@@ -125,6 +125,7 @@
*/
public NodeSPI<K, V> createDataNode(Object childName, Fqn fqn, NodeSPI<K,
V> parent, Map<K, V> data, boolean mapSafe)
{
+ // TODO: See if data versions are needed with MVCC. Should use cheaper
UnversionedNode otherwise.
UnversionedNode un = useVersionedNode ? new VersionedNode<K, V>(fqn, parent,
data, cache) : new UnversionedNode<K, V>(childName, fqn, data, cache);
// it is internal nodes that are wrapped in NIDs.
Modified: core/trunk/src/main/java/org/jboss/cache/mvcc/ReadCommittedNode.java
===================================================================
--- core/trunk/src/main/java/org/jboss/cache/mvcc/ReadCommittedNode.java 2008-07-11
15:46:23 UTC (rev 6250)
+++ core/trunk/src/main/java/org/jboss/cache/mvcc/ReadCommittedNode.java 2008-07-11
17:01:51 UTC (rev 6251)
@@ -52,6 +52,7 @@
InternalNode backupDelegationTarget = ((NodeReference) backup).getDelegate();
node = backupDelegationTarget.copy();
}
+ // TODO: See if data versions are even needed in the first place!!
// TODO: Make sure this works with custom versions as well!
// DataVersion newVersion = ((DefaultDataVersion) node.getVersion()).increment();
// node.setVersion(newVersion);
Modified: core/trunk/src/main/java/org/jboss/cache/mvcc/RepeatableReadNode.java
===================================================================
--- core/trunk/src/main/java/org/jboss/cache/mvcc/RepeatableReadNode.java 2008-07-11
15:46:23 UTC (rev 6250)
+++ core/trunk/src/main/java/org/jboss/cache/mvcc/RepeatableReadNode.java 2008-07-11
17:01:51 UTC (rev 6251)
@@ -8,7 +8,6 @@
import org.jboss.cache.invocation.InvocationContext;
import org.jboss.cache.optimistic.DataVersion;
import org.jboss.cache.optimistic.DataVersioningException;
-import org.jboss.cache.optimistic.DefaultDataVersion;
/**
* A node delegate that encapsulates repeatable read semantics when writes are initiated,
committed or rolled back.
@@ -36,9 +35,11 @@
// check for write skew.
NodeSPI underlyingNode = container.peek(fqn, false, true); // even check for
invalid nodes. we should check tombstones too.
DataVersion underlyingNodeVersion = underlyingNode == null ? null :
underlyingNode.getVersion();
- if (!allowWriteSkew && underlyingNode != null &&
!node.getVersion().equals(underlyingNodeVersion))
+ // TODO: See if data versions are even needed in the first place!!
+ //if (!allowWriteSkew && underlyingNode != null &&
!node.getVersion().equals(underlyingNodeVersion))
+ if (!allowWriteSkew && underlyingNode != null && underlyingNode !=
node)
{
- String errormsg = new StringBuilder().append("Detected write skew on Fqn
[").append(fqn).append("]. Attempting to overwrite version
").append(node.getVersion()).append(" but current version has progressed to
").append(underlyingNodeVersion).toString();
+ String errormsg = new StringBuilder().append("Detected write skew on Fqn
[").append(fqn).append("]. Another process has changed the node since we last
read it!").toString();
if (log.isWarnEnabled()) log.warn(errormsg + ". Unable to copy node for
update.");
throw new DataVersioningException(errormsg);
}
@@ -46,11 +47,11 @@
// make a backup copy
backup = node;
node = backup.copy();
-
+ // TODO: See if data versions are even needed in the first place!!
// update version on copy
// TODO: Make sure this works with custom versions as well!
- DataVersion newVersion = ((DefaultDataVersion) node.getVersion()).increment();
- node.setVersion(newVersion);
+// DataVersion newVersion = ((DefaultDataVersion) node.getVersion()).increment();
+// node.setVersion(newVersion);
}
@Override
Show replies by date