[jbosscache-commits] JBoss Cache SVN: r7238 - in core/branches/flat/src/main/java/org/jboss/starobrno: util and 1 other directories.

jbosscache-commits at lists.jboss.org jbosscache-commits at lists.jboss.org
Tue Dec 2 10:49:26 EST 2008


Author: manik.surtani at jboss.com
Date: 2008-12-02 10:49:26 -0500 (Tue, 02 Dec 2008)
New Revision: 7238

Modified:
   core/branches/flat/src/main/java/org/jboss/starobrno/tree/TreeCacheImpl.java
   core/branches/flat/src/main/java/org/jboss/starobrno/tree/TreeStructureSupport.java
   core/branches/flat/src/main/java/org/jboss/starobrno/util/Immutables.java
   core/branches/flat/src/main/java/org/jboss/starobrno/util/concurrent/locks/OwnableReentrantLock.java
Log:
Improved performance of tree struct

Modified: core/branches/flat/src/main/java/org/jboss/starobrno/tree/TreeCacheImpl.java
===================================================================
--- core/branches/flat/src/main/java/org/jboss/starobrno/tree/TreeCacheImpl.java	2008-12-02 15:19:49 UTC (rev 7237)
+++ core/branches/flat/src/main/java/org/jboss/starobrno/tree/TreeCacheImpl.java	2008-12-02 15:49:26 UTC (rev 7238)
@@ -26,6 +26,7 @@
 import org.jboss.cache.Region;
 import org.jboss.starobrno.Cache;
 import org.jboss.starobrno.CacheException;
+import org.jboss.starobrno.atomic.AtomicMap;
 import org.jboss.starobrno.config.Configuration;
 import org.jboss.starobrno.context.InvocationContext;
 import org.jboss.starobrno.interceptors.base.CommandInterceptor;
@@ -79,13 +80,14 @@
       put(Fqn.fromString(fqn), data);
    }
 
+   @SuppressWarnings("unchecked")
    public V remove(Fqn fqn, K key)
    {
       startAtomic();
       try
       {
-         Node<K, V> n = getNode(fqn);
-         return n == null ? null : n.remove(key);
+         AtomicMap map = atomicMapCache.getAtomicMap(new NodeKey(fqn, NodeKey.Type.DATA));
+         return map == null ? null : (V) map.remove(key);
       }
       finally
       {
@@ -138,19 +140,12 @@
       return getNode(Fqn.fromString(fqn));
    }
 
+   @SuppressWarnings("unchecked")
    public V get(Fqn fqn, K key)
    {
-      startAtomic();
-      try
-      {
-         Node n = getNode(fqn);
-
-         return (V) (n == null ? null : n.get(key));
-      }
-      finally
-      {
-         endAtomic();
-      }
+      Map m = atomicMapCache.getAtomicMap(new NodeKey(fqn, NodeKey.Type.DATA));
+      if (m == null) return null;
+      return (V) m.get(key);
    }
 
    public boolean exists(String f)
@@ -288,13 +283,14 @@
       }
    }
 
+   @SuppressWarnings("unchecked")
    public V put(Fqn fqn, K key, V value)
    {
       startAtomic();
       try
       {
          createNodeInCache(fqn);
-         return getNode(fqn).put(key, value);
+         return (V) atomicMapCache.getAtomicMap(new NodeKey(fqn, NodeKey.Type.DATA)).put(key, value);
       }
       finally
       {

Modified: core/branches/flat/src/main/java/org/jboss/starobrno/tree/TreeStructureSupport.java
===================================================================
--- core/branches/flat/src/main/java/org/jboss/starobrno/tree/TreeStructureSupport.java	2008-12-02 15:19:49 UTC (rev 7237)
+++ core/branches/flat/src/main/java/org/jboss/starobrno/tree/TreeStructureSupport.java	2008-12-02 15:49:26 UTC (rev 7238)
@@ -50,11 +50,18 @@
       }
    }
 
-   void createNodeInCache(Fqn fqn)
+   /**
+    * @param fqn
+    * @return true if created, false if this was not necessary
+    */
+   boolean createNodeInCache(Fqn fqn)
    {
       startAtomic();
       try
       {
+         NodeKey dataKey = new NodeKey(fqn, NodeKey.Type.DATA);
+         NodeKey structureKey = new NodeKey(fqn, NodeKey.Type.STRUCTURE);
+         if (cache.containsKey(dataKey) && cache.containsKey(structureKey)) return false;
          Fqn parent = fqn.getParent();
          if (!fqn.isRoot())
          {
@@ -67,13 +74,11 @@
             parentStructure.put(fqn.getLastElement(), fqn);
 //            updateStructure(parent, parentStructure);
          }
-         NodeKey dataKey = new NodeKey(fqn, NodeKey.Type.DATA);
-         NodeKey structureKey = new NodeKey(fqn, NodeKey.Type.STRUCTURE);
-         if (cache.containsKey(dataKey) && cache.containsKey(structureKey)) return;
 //         FastCopyHashMap<Object, Fqn> structure = new FastCopyHashMap<Object, Fqn>();
 //         cache.put(structureKey, structure);
          atomicMapCache.getAtomicMap(structureKey);
          atomicMapCache.getAtomicMap(dataKey);
+         return true;
       }
       finally
       {

Modified: core/branches/flat/src/main/java/org/jboss/starobrno/util/Immutables.java
===================================================================
--- core/branches/flat/src/main/java/org/jboss/starobrno/util/Immutables.java	2008-12-02 15:19:49 UTC (rev 7237)
+++ core/branches/flat/src/main/java/org/jboss/starobrno/util/Immutables.java	2008-12-02 15:49:26 UTC (rev 7238)
@@ -21,24 +21,13 @@
  */
 package org.jboss.starobrno.util;
 
-import org.jboss.starobrno.util.FastCopyHashMap;
 import org.jboss.cache.util.ImmutableListCopy;
+import org.jboss.starobrno.atomic.AtomicHashMapProxy;
 
 import java.io.Serializable;
 import java.lang.reflect.Array;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.LinkedHashMap;
-import java.util.LinkedHashSet;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 import java.util.Map.Entry;
-import java.util.Set;
-import java.util.TreeMap;
-import java.util.TreeSet;
 
 /**
  * Factory for generating immutable type wrappers.
@@ -200,6 +189,8 @@
    @SuppressWarnings("unchecked")
    private static <T extends Map> T attemptKnownMapCopy(T map)
    {
+      if (map instanceof AtomicHashMapProxy)
+         return map; // just a proxy!!
       if (map instanceof FastCopyHashMap)
          return (T) ((FastCopyHashMap) map).clone();
       if (map instanceof HashMap)

Modified: core/branches/flat/src/main/java/org/jboss/starobrno/util/concurrent/locks/OwnableReentrantLock.java
===================================================================
--- core/branches/flat/src/main/java/org/jboss/starobrno/util/concurrent/locks/OwnableReentrantLock.java	2008-12-02 15:19:49 UTC (rev 7237)
+++ core/branches/flat/src/main/java/org/jboss/starobrno/util/concurrent/locks/OwnableReentrantLock.java	2008-12-02 15:49:26 UTC (rev 7238)
@@ -144,7 +144,9 @@
       int c = getState() - releases;
       if (!currentRequestor().equals(owner))
       {
-         throw new IllegalMonitorStateException(this.toString());
+         //throw new IllegalMonitorStateException(this.toString());
+         // lets be quiet about this
+         return false;
       }
       boolean free = false;
       if (c == 0)




More information about the jbosscache-commits mailing list