[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