[jbosscache-commits] JBoss Cache SVN: r6375 - in core/trunk/src/main/java/org/jboss/cache: buddyreplication and 4 other directories.
jbosscache-commits at lists.jboss.org
jbosscache-commits at lists.jboss.org
Wed Jul 23 07:03:33 EDT 2008
Author: manik.surtani at jboss.com
Date: 2008-07-23 07:03:33 -0400 (Wed, 23 Jul 2008)
New Revision: 6375
Modified:
core/trunk/src/main/java/org/jboss/cache/Fqn.java
core/trunk/src/main/java/org/jboss/cache/PessimisticUnversionedNode.java
core/trunk/src/main/java/org/jboss/cache/UnversionedNode.java
core/trunk/src/main/java/org/jboss/cache/buddyreplication/BuddyFqnTransformer.java
core/trunk/src/main/java/org/jboss/cache/commands/read/GetChildrenNamesCommand.java
core/trunk/src/main/java/org/jboss/cache/commands/remote/DataGravitationCleanupCommand.java
core/trunk/src/main/java/org/jboss/cache/commands/write/MoveCommand.java
core/trunk/src/main/java/org/jboss/cache/mvcc/MVCCNodeHelper.java
Log:
Performance tweaks around the usage of Fqns and Fqn.getParent()
Modified: core/trunk/src/main/java/org/jboss/cache/Fqn.java
===================================================================
--- core/trunk/src/main/java/org/jboss/cache/Fqn.java 2008-07-23 05:01:02 UTC (rev 6374)
+++ core/trunk/src/main/java/org/jboss/cache/Fqn.java 2008-07-23 11:03:33 UTC (rev 6375)
@@ -425,7 +425,19 @@
return parentFqn.size() != size && isChildOrEquals(parentFqn);
}
+
/**
+ * Returns true if this Fqn is a <i>direct</i> child of a given Fqn.
+ *
+ * @param parentFqn parentFqn to compare with
+ * @return true if this is a direct child, false otherwise.
+ */
+ public boolean isDirectChildOf(Fqn parentFqn)
+ {
+ return size == parentFqn.size() - 1 && isChildOf(parentFqn);
+ }
+
+ /**
* Returns true if this Fqn is equals or the child of parentFqn.
* Example usage:
* <pre>
Modified: core/trunk/src/main/java/org/jboss/cache/PessimisticUnversionedNode.java
===================================================================
--- core/trunk/src/main/java/org/jboss/cache/PessimisticUnversionedNode.java 2008-07-23 05:01:02 UTC (rev 6374)
+++ core/trunk/src/main/java/org/jboss/cache/PessimisticUnversionedNode.java 2008-07-23 11:03:33 UTC (rev 6375)
@@ -95,7 +95,8 @@
@Override
public void addChild(NodeSPI<K, V> child)
{
- if (child.getFqn().getParent().equals(getFqn()))
+ Fqn childFqn = child.getFqn();
+ if (childFqn.isDirectChildOf(fqn))
{
synchronized (this)
{
Modified: core/trunk/src/main/java/org/jboss/cache/UnversionedNode.java
===================================================================
--- core/trunk/src/main/java/org/jboss/cache/UnversionedNode.java 2008-07-23 05:01:02 UTC (rev 6374)
+++ core/trunk/src/main/java/org/jboss/cache/UnversionedNode.java 2008-07-23 11:03:33 UTC (rev 6375)
@@ -347,8 +347,7 @@
public void addChild(NodeSPI<K, V> child)
{
Fqn childFqn = child.getFqn();
- Fqn parentFqn = childFqn.getParent();
- if (parentFqn.equals(fqn))
+ if (childFqn.isDirectChildOf(fqn))
{
children().put(childFqn.getLastElement(), child);
}
Modified: core/trunk/src/main/java/org/jboss/cache/buddyreplication/BuddyFqnTransformer.java
===================================================================
--- core/trunk/src/main/java/org/jboss/cache/buddyreplication/BuddyFqnTransformer.java 2008-07-23 05:01:02 UTC (rev 6374)
+++ core/trunk/src/main/java/org/jboss/cache/buddyreplication/BuddyFqnTransformer.java 2008-07-23 11:03:33 UTC (rev 6375)
@@ -127,7 +127,7 @@
public boolean isDeadBackupRoot(Fqn f)
{
- return f.getParent().equals(BUDDY_BACKUP_SUBTREE_FQN) && f.getLastElementAsString().endsWith(":DEAD");
+ return f.isDirectChildOf(BUDDY_BACKUP_SUBTREE_FQN) && f.getLastElementAsString().endsWith(":DEAD");
}
public String getGroupNameFromAddress(Address address)
Modified: core/trunk/src/main/java/org/jboss/cache/commands/read/GetChildrenNamesCommand.java
===================================================================
--- core/trunk/src/main/java/org/jboss/cache/commands/read/GetChildrenNamesCommand.java 2008-07-23 05:01:02 UTC (rev 6374)
+++ core/trunk/src/main/java/org/jboss/cache/commands/read/GetChildrenNamesCommand.java 2008-07-23 11:03:33 UTC (rev 6375)
@@ -82,7 +82,8 @@
for (Map.Entry<Fqn, NodeSPI> n : ctx.getLookedUpNodes().entrySet())
{
Fqn childFqn = n.getKey();
- if (childFqn.getParent().equals(fqn))
+
+ if (childFqn.isDirectChildOf(fqn))
{
ReadCommittedNode childNode = (ReadCommittedNode) n.getValue();
if (childNode.isCreated()) childNames.add(childFqn.getLastElement());
Modified: core/trunk/src/main/java/org/jboss/cache/commands/remote/DataGravitationCleanupCommand.java
===================================================================
--- core/trunk/src/main/java/org/jboss/cache/commands/remote/DataGravitationCleanupCommand.java 2008-07-23 05:01:02 UTC (rev 6374)
+++ core/trunk/src/main/java/org/jboss/cache/commands/remote/DataGravitationCleanupCommand.java 2008-07-23 11:03:33 UTC (rev 6375)
@@ -86,7 +86,7 @@
if (wasNodeRemoved(result))
{
// if this is a DIRECT child of a DEAD buddy backup region, then remove the empty dead region structural node.
- if (buddyFqnTransformer.isDeadBackupFqn(backup) && buddyFqnTransformer.isDeadBackupRoot(backup.getParent().getParent()))
+ if (buddyFqnTransformer.isDeadBackupFqn(backup) && buddyFqnTransformer.isDeadBackupRoot(backup.getAncestor(backup.size() - 2)))
{
NodeSPI deadBackupRoot = dataContainer.peek(backup.getParent(), false); // ctx.lookUpNode(backup.getParent());
if (deadBackupRoot.getChildrenMapDirect().isEmpty())
Modified: core/trunk/src/main/java/org/jboss/cache/commands/write/MoveCommand.java
===================================================================
--- core/trunk/src/main/java/org/jboss/cache/commands/write/MoveCommand.java 2008-07-23 05:01:02 UTC (rev 6374)
+++ core/trunk/src/main/java/org/jboss/cache/commands/write/MoveCommand.java 2008-07-23 11:03:33 UTC (rev 6375)
@@ -67,7 +67,7 @@
*/
public Object perform(InvocationContext ctx)
{
- if (to.equals(fqn.getParent()))
+ if (to.isDirectChildOf(fqn))
{
if (log.isDebugEnabled()) log.debug("Attempting to move " + fqn + " onto itself. Nothing to do.");
return null;
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-23 05:01:02 UTC (rev 6374)
+++ core/trunk/src/main/java/org/jboss/cache/mvcc/MVCCNodeHelper.java 2008-07-23 11:03:33 UTC (rev 6375)
@@ -168,6 +168,7 @@
*/
public ReadCommittedNode wrapNodeForWriting(InvocationContext context, Fqn fqn, boolean lockForWriting, boolean createIfAbsent, boolean includeInvalidNodes, boolean forRemoval, boolean force) throws InterruptedException
{
+ Fqn parentFqn = null;
ReadCommittedNode n = (ReadCommittedNode) context.lookUpNode(fqn);
if (createIfAbsent && n != null && n.isNullNode()) n = null;
if (n != null) // exists in context! Just acquire lock if needed, and wrap.
@@ -205,7 +206,7 @@
}
else if (createIfAbsent) // else, do we need to create one?
{
- Fqn parentFqn = fqn.getParent();
+ parentFqn = fqn.getParent();
NodeSPI parent = wrapNodeForWriting(context, parentFqn, false, createIfAbsent, false, false, false);
// do we need to lock the parent to create children?
boolean parentLockNeeded = isParentLockNeeded(parent);
@@ -236,8 +237,8 @@
if (n == null && force) acquireLock(context, fqn);
// now test if we need to lock the parent as well.
- if ((n != null || force) && forRemoval && isParentLockNeeded(fqn.getParent(), context))
- wrapNodeForWriting(context, fqn.getParent(), true, false, includeInvalidNodes, false, force);
+ if ((n != null || force) && forRemoval && (parentFqn == null ? parentFqn = fqn.getParent() : parentFqn) != null && isParentLockNeeded(parentFqn, context))
+ wrapNodeForWriting(context, parentFqn, true, false, includeInvalidNodes, false, force);
return n;
}
More information about the jbosscache-commits
mailing list