[jbosscache-commits] JBoss Cache SVN: r6287 - in core/trunk/src: main/java/org/jboss/cache/config and 5 other directories.
jbosscache-commits at lists.jboss.org
jbosscache-commits at lists.jboss.org
Wed Jul 16 04:31:16 EDT 2008
Author: manik.surtani at jboss.com
Date: 2008-07-16 04:31:16 -0400 (Wed, 16 Jul 2008)
New Revision: 6287
Modified:
core/trunk/src/main/java/org/jboss/cache/InternalNode.java
core/trunk/src/main/java/org/jboss/cache/UnversionedNode.java
core/trunk/src/main/java/org/jboss/cache/config/Configuration.java
core/trunk/src/main/java/org/jboss/cache/config/parsing/XmlConfigurationParser.java
core/trunk/src/main/java/org/jboss/cache/interceptors/MVCCLockingInterceptor.java
core/trunk/src/main/java/org/jboss/cache/mvcc/MVCCNodeHelper.java
core/trunk/src/main/java/org/jboss/cache/mvcc/NodeReference.java
core/trunk/src/main/java/org/jboss/cache/mvcc/ReadCommittedNode.java
core/trunk/src/main/java/org/jboss/cache/mvcc/RepeatableReadNode.java
core/trunk/src/main/resources/jbosscache-config-3.0.xsd
core/trunk/src/test/resources/configs/parser-test.xml
Log:
allowWriteSkew -> writeSkewCheck
Modified: core/trunk/src/main/java/org/jboss/cache/InternalNode.java
===================================================================
--- core/trunk/src/main/java/org/jboss/cache/InternalNode.java 2008-07-16 01:12:42 UTC (rev 6286)
+++ core/trunk/src/main/java/org/jboss/cache/InternalNode.java 2008-07-16 08:31:16 UTC (rev 6287)
@@ -121,12 +121,4 @@
void addChild(Object nodeName, Node<K, V> nodeToAdd);
void printDetails(StringBuilder sb, int indent);
-
- /**
- * Very similar to getChildrenMapDirect() except that if the internal map is null, it initialises the map if init is true.
- *
- * @param init if true, will init internal data structures.
- * @return a Map or null.
- */
- Map<Object, Node<K, V>> getChildrenMapDirect(boolean init);
}
Modified: core/trunk/src/main/java/org/jboss/cache/UnversionedNode.java
===================================================================
--- core/trunk/src/main/java/org/jboss/cache/UnversionedNode.java 2008-07-16 01:12:42 UTC (rev 6286)
+++ core/trunk/src/main/java/org/jboss/cache/UnversionedNode.java 2008-07-16 08:31:16 UTC (rev 6287)
@@ -531,11 +531,6 @@
return children;
}
- public Map<Object, Node<K, V>> getChildrenMapDirect(boolean init)
- {
- return init ? children() : children;
- }
-
public void setChildrenMapDirect(Map<Object, Node<K, V>> children)
{
if (children == null)
Modified: core/trunk/src/main/java/org/jboss/cache/config/Configuration.java
===================================================================
--- core/trunk/src/main/java/org/jboss/cache/config/Configuration.java 2008-07-16 01:12:42 UTC (rev 6286)
+++ core/trunk/src/main/java/org/jboss/cache/config/Configuration.java 2008-07-16 08:31:16 UTC (rev 6287)
@@ -203,7 +203,7 @@
private int objectInputStreamPoolSize = 50;
private int objectOutputStreamPoolSize = 50;
private List<CustomInterceptorConfig> customInterceptors = Collections.emptyList();
- private boolean allowWriteSkew = false;
+ private boolean writeSkewCheck = false;
private int concurrencyLevel = 50;
@Start(priority = 1)
@@ -216,7 +216,6 @@
{
case NONE:
case READ_UNCOMMITTED:
- System.out.println("Upgrading!");
isolationLevel = IsolationLevel.READ_COMMITTED;
break;
case SERIALIZABLE:
@@ -240,15 +239,15 @@
return marshaller;
}
- public boolean isAllowWriteSkew()
+ public boolean isWriteSkewCheck()
{
- return allowWriteSkew;
+ return writeSkewCheck;
}
- public void setAllowWriteSkew(boolean allowWriteSkew)
+ public void setWriteSkewCheck(boolean writeSkewCheck)
{
- testImmutability("allowWriteSkew");
- this.allowWriteSkew = allowWriteSkew;
+ testImmutability("writeSkewCheck");
+ this.writeSkewCheck = writeSkewCheck;
}
public int getConcurrencyLevel()
Modified: core/trunk/src/main/java/org/jboss/cache/config/parsing/XmlConfigurationParser.java
===================================================================
--- core/trunk/src/main/java/org/jboss/cache/config/parsing/XmlConfigurationParser.java 2008-07-16 01:12:42 UTC (rev 6286)
+++ core/trunk/src/main/java/org/jboss/cache/config/parsing/XmlConfigurationParser.java 2008-07-16 08:31:16 UTC (rev 6287)
@@ -23,16 +23,20 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.jboss.cache.config.*;
+import org.jboss.cache.config.BuddyReplicationConfig;
+import org.jboss.cache.config.CacheLoaderConfig;
+import org.jboss.cache.config.Configuration;
+import org.jboss.cache.config.ConfigurationException;
+import org.jboss.cache.config.CustomInterceptorConfig;
+import org.jboss.cache.config.OldFileFormatException;
import org.jboss.cache.config.parsing.element.BuddyElementParser;
+import org.jboss.cache.config.parsing.element.CustomInterceptorsElementParser;
import org.jboss.cache.config.parsing.element.EvictionElementParser;
import org.jboss.cache.config.parsing.element.LoadersElementParser;
-import org.jboss.cache.config.parsing.element.CustomInterceptorsElementParser;
import org.jboss.cache.lock.IsolationLevel;
import org.jboss.cache.util.FileLookup;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
-import org.w3c.dom.NodeList;
import org.xml.sax.ErrorHandler;
import org.xml.sax.SAXException;
import org.xml.sax.SAXParseException;
@@ -40,9 +44,7 @@
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import java.io.InputStream;
-import java.util.ArrayList;
import java.util.List;
-import java.util.Properties;
/**
* Reads in XMLconfiguration files and spits out a {@link org.jboss.cache.config.Configuration} object.
@@ -173,7 +175,8 @@
configureEviction(getSingleElement("eviction"));
configureCacheLoaders(getSingleElement("loaders"));
configureCustomInterceptors(getSingleElement("customInterceptors"));
- } catch (Exception e)
+ }
+ catch (Exception e)
{
throw new ConfigurationException("Unexpected excetion while parsing the configuration file", e);
}
@@ -353,8 +356,8 @@
if (existsAttribute(lockAcquisitionTimeout)) config.setLockAcquisitionTimeout(getLong(lockAcquisitionTimeout));
String nodeLockingScheme = getAttributeValue(element, "nodeLockingScheme");
if (existsAttribute(nodeLockingScheme)) config.setNodeLockingScheme(nodeLockingScheme);
- String allowWriteSkew = getAttributeValue(element, "allowWriteSkew");
- if (existsAttribute(allowWriteSkew)) config.setAllowWriteSkew(getBoolean(allowWriteSkew));
+ String writeSkewCheck = getAttributeValue(element, "writeSkewCheck");
+ if (existsAttribute(writeSkewCheck)) config.setWriteSkewCheck(getBoolean(writeSkewCheck));
String concurrencyLevel = getAttributeValue(element, "concurrencyLevel");
if (existsAttribute(concurrencyLevel)) config.setConcurrencyLevel(getInt(concurrencyLevel));
}
@@ -380,7 +383,8 @@
Document doc = parser.parse(config);
root = doc.getDocumentElement();
root.normalize();
- } catch (Exception e)
+ }
+ catch (Exception e)
{
log.error(e);
throw new ConfigurationException("Could not parse the config file");
Modified: core/trunk/src/main/java/org/jboss/cache/interceptors/MVCCLockingInterceptor.java
===================================================================
--- core/trunk/src/main/java/org/jboss/cache/interceptors/MVCCLockingInterceptor.java 2008-07-16 01:12:42 UTC (rev 6286)
+++ core/trunk/src/main/java/org/jboss/cache/interceptors/MVCCLockingInterceptor.java 2008-07-16 08:31:16 UTC (rev 6287)
@@ -26,7 +26,6 @@
import org.jboss.cache.commands.write.RemoveKeyCommand;
import org.jboss.cache.commands.write.RemoveNodeCommand;
import org.jboss.cache.factories.annotations.Inject;
-import org.jboss.cache.factories.annotations.Start;
import org.jboss.cache.interceptors.base.PrePostProcessingCommandInterceptor;
import org.jboss.cache.invocation.InvocationContext;
import org.jboss.cache.lock.LockManager;
@@ -47,7 +46,6 @@
*/
public class MVCCLockingInterceptor extends PrePostProcessingCommandInterceptor
{
- boolean allowWriteSkew;
LockManager lockManager;
DataContainer dataContainer;
NodeFactory nodeFactory;
@@ -62,12 +60,6 @@
this.helper = helper;
}
- @Start
- public void start()
- {
- allowWriteSkew = configuration.isAllowWriteSkew();
- }
-
@Override
protected boolean doBeforeCall(InvocationContext ctx, VisitableCommand command)
{
Modified: core/trunk/src/main/java/org/jboss/cache/mvcc/MVCCNodeHelper.java
===================================================================
--- core/trunk/src/main/java/org/jboss/cache/mvcc/MVCCNodeHelper.java 2008-07-16 01:12:42 UTC (rev 6286)
+++ core/trunk/src/main/java/org/jboss/cache/mvcc/MVCCNodeHelper.java 2008-07-16 08:31:16 UTC (rev 6287)
@@ -41,7 +41,7 @@
private long defaultLockAcquisitionTimeout;
private LockManager lockManager;
private Configuration configuration;
- private boolean allowWriteSkew;
+ private boolean writeSkewCheck;
private boolean lockParentForChildInsertRemove;
@Inject
@@ -57,7 +57,7 @@
public void start()
{
defaultLockAcquisitionTimeout = configuration.getLockAcquisitionTimeout();
- allowWriteSkew = configuration.isAllowWriteSkew();
+ writeSkewCheck = configuration.isWriteSkewCheck();
lockParentForChildInsertRemove = configuration.isLockParentForChildInsertRemove();
}
@@ -176,7 +176,7 @@
if (lockForWriting && acquireLock(context, fqn))
{
// create a copy of the underlying node
- n.markForUpdate(context, dataContainer, nodeFactory, allowWriteSkew);
+ n.markForUpdate(context, dataContainer, nodeFactory, writeSkewCheck);
}
if (trace) log.trace("Retrieving wrapped node " + fqn);
if (n.isDeleted() && createIfAbsent)
@@ -201,7 +201,7 @@
}
n = nodeFactory.createWrappedNode(in);
context.putLookedUpNode(fqn, n);
- if (needToCopy) n.markForUpdate(context, dataContainer, nodeFactory, allowWriteSkew);
+ if (needToCopy) n.markForUpdate(context, dataContainer, nodeFactory, writeSkewCheck);
}
else if (createIfAbsent) // else, do we need to create one?
{
@@ -213,7 +213,7 @@
if (parentLockNeeded && acquireLock(context, parentFqn))
{
ReadCommittedNode parentRCN = (ReadCommittedNode) context.lookUpNode(parentFqn);
- parentRCN.markForUpdate(context, dataContainer, nodeFactory, allowWriteSkew);
+ parentRCN.markForUpdate(context, dataContainer, nodeFactory, writeSkewCheck);
}
// now to lock and create the node.
@@ -227,7 +227,7 @@
n = nodeFactory.createWrappedNode(in);
n.setCreated(true);
context.putLookedUpNode(fqn, n);
- n.markForUpdate(context, dataContainer, nodeFactory, allowWriteSkew);
+ n.markForUpdate(context, dataContainer, nodeFactory, writeSkewCheck);
}
}
@@ -308,7 +308,7 @@
ReadCommittedNode rcn = wrapNodeForWriting(ctx, fqn, true, false, true, false, false);
if (rcn != null)
{
- rcn.markForUpdate(ctx, dataContainer, nodeFactory, allowWriteSkew);
+ rcn.markForUpdate(ctx, dataContainer, nodeFactory, writeSkewCheck);
ReadCommittedNode parent = (ReadCommittedNode) ctx.lookUpNode(fqn.getParent());
parent.addChildDirect(nodeFactory.createNodeInvocationDelegate(rcn.getDelegationTarget(), configuration.getIsolationLevel() == IsolationLevel.READ_COMMITTED));
@@ -335,7 +335,7 @@
if (needToCopyNode && node != null && !node.isChanged()) // node could be null if using read-committed
{
- node.markForUpdate(ctx, dataContainer, nodeFactory, allowWriteSkew);
+ node.markForUpdate(ctx, dataContainer, nodeFactory, writeSkewCheck);
}
}
Modified: core/trunk/src/main/java/org/jboss/cache/mvcc/NodeReference.java
===================================================================
--- core/trunk/src/main/java/org/jboss/cache/mvcc/NodeReference.java 2008-07-16 01:12:42 UTC (rev 6286)
+++ core/trunk/src/main/java/org/jboss/cache/mvcc/NodeReference.java 2008-07-16 08:31:16 UTC (rev 6287)
@@ -155,11 +155,6 @@
return delegate.getChildrenMapDirect();
}
- public Map<Object, Node<K, V>> getChildrenMapDirect(boolean b)
- {
- return delegate.getChildrenMapDirect(b);
- }
-
public void setChildrenMapDirect(Map<Object, Node<K, V>> children)
{
delegate.setChildrenMapDirect(children);
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-16 01:12:42 UTC (rev 6286)
+++ core/trunk/src/main/java/org/jboss/cache/mvcc/ReadCommittedNode.java 2008-07-16 08:31:16 UTC (rev 6287)
@@ -44,9 +44,9 @@
* @param ctx invocation context
* @param container data container
* @param nodeFactory node factory for creating new nodes/copies.
- * @param allowWriteSkew if true, write skews are allowed. Only makes sense with repeatable read.
+ * @param writeSkewCheck if true, and the node supports write skew checking, nodes are tested for write skews.
*/
- public void markForUpdate(InvocationContext ctx, DataContainer container, NodeFactory nodeFactory, boolean allowWriteSkew)
+ public void markForUpdate(InvocationContext ctx, DataContainer container, NodeFactory nodeFactory, boolean writeSkewCheck)
{
if (changed) return; // already copied
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-16 01:12:42 UTC (rev 6286)
+++ core/trunk/src/main/java/org/jboss/cache/mvcc/RepeatableReadNode.java 2008-07-16 08:31:16 UTC (rev 6287)
@@ -27,7 +27,7 @@
}
@Override
- public void markForUpdate(InvocationContext ctx, DataContainer container, NodeFactory nodeFactory, boolean allowWriteSkew)
+ public void markForUpdate(InvocationContext ctx, DataContainer container, NodeFactory nodeFactory, boolean writeSkewCheck)
{
if (changed) return; // already copied
@@ -36,14 +36,17 @@
// mark node as changed.
changed = true;
- // check for write skew.
- NodeInvocationDelegate underlyingNode = (NodeInvocationDelegate) container.peek(fqn, false, true); // even check for invalid nodes. we should check tombstones too.
+ if (writeSkewCheck)
+ {
+ // check for write skew.
+ NodeInvocationDelegate underlyingNode = (NodeInvocationDelegate) container.peek(fqn, false, true); // even check for invalid nodes. we should check tombstones too.
- if (!allowWriteSkew && underlyingNode != null && underlyingNode.getDelegationTarget() != node)
- {
- 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);
+ if (underlyingNode != null && underlyingNode.getDelegationTarget() != node)
+ {
+ 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);
+ }
}
// make a backup copy
Modified: core/trunk/src/main/resources/jbosscache-config-3.0.xsd
===================================================================
--- core/trunk/src/main/resources/jbosscache-config-3.0.xsd 2008-07-16 01:12:42 UTC (rev 6286)
+++ core/trunk/src/main/resources/jbosscache-config-3.0.xsd 2008-07-16 08:31:16 UTC (rev 6287)
@@ -38,7 +38,7 @@
</xs:restriction>
</xs:simpleType>
</xs:attribute>
- <xs:attribute name="allowWriteSkew" type="booleanType"/>
+ <xs:attribute name="writeSkewCheck" type="booleanType"/>
<xs:attribute name="concurrencyLevel" type="xs:integer"/>
</xs:complexType>
Modified: core/trunk/src/test/resources/configs/parser-test.xml
===================================================================
--- core/trunk/src/test/resources/configs/parser-test.xml 2008-07-16 01:12:42 UTC (rev 6286)
+++ core/trunk/src/test/resources/configs/parser-test.xml 2008-07-16 08:31:16 UTC (rev 6287)
@@ -7,7 +7,7 @@
<locking isolationLevel="REPEATABLE_READ" lockParentForChildInsertRemove="true" lockAcquisitionTimeout="10234"
- nodeLockingScheme="mvcc" allowWriteSkew="true" concurrencyLevel="21"/>
+ nodeLockingScheme="mvcc" writeSkewCheck="false" concurrencyLevel="21"/>
<transaction transactionManagerLookupClass="org.jboss.cache.transaction.GenericTransactionManagerLookup"
syncRollbackPhase="true" syncCommitPhase="true"/>
More information about the jbosscache-commits
mailing list