remm        2005/09/12 03:33:12

  Modified:    catalina/src/share/org/apache/naming/resources
                        ResourceCache.java
  Log:
  - 36594: Fix a number of issues in the class, most importantly fix updating 
the
    cache size after a failed allocation.
  - Submitted by Anil Gangolli.
  
  Revision  Changes    Path
  1.4       +17 -9     
jakarta-tomcat-catalina/catalina/src/share/org/apache/naming/resources/ResourceCache.java
  
  Index: ResourceCache.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-tomcat-catalina/catalina/src/share/org/apache/naming/resources/ResourceCache.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- ResourceCache.java        27 Feb 2004 14:58:54 -0000      1.3
  +++ ResourceCache.java        12 Sep 2005 10:33:12 -0000      1.4
  @@ -17,6 +17,8 @@
   package org.apache.naming.resources;
   
   import java.util.HashMap;
  +import java.util.Random;
  +
   
   /**
    * Implements a special purpose cache.
  @@ -35,8 +37,14 @@
       
       
       // ----------------------------------------------------- Instance 
Variables
  -    
  -    
  +
  +
  +    /**
  +     * Random generator used to determine elements to free.
  +     */
  +    protected Random random = new Random();
  +
  +
       /**
        * Cache.
        * Path -> Cache entry.
  @@ -227,11 +235,9 @@
                   // Randomly select an entry in the array
                   int entryPos = -1;
                   boolean unique = false;
  -                int count = 0;
                   while (!unique) {
                       unique = true;
  -                    entryPos = (int) Math.floor(Math.random() 
  -                                                * (cache.length - 1));
  +                    entryPos = random.nextInt(cache.length) ;
                       // Guarantee uniqueness
                       for (int i = 0; i < entriesFound; i++) {
                           if (toRemove[i] == entryPos) {
  @@ -305,11 +311,14 @@
   
       public void load(CacheEntry entry) {
           if (entry.exists) {
  -            insertCache(entry);
  +            if (insertCache(entry)) {
  +                cacheSize += entry.size;
  +            }
           } else {
  +            int sizeIncrement = (notFoundCache.get(entry.name) == null) ? 1 
: 0;
               notFoundCache.put(entry.name, entry);
  +            cacheSize += sizeIncrement;
           }
  -        cacheSize += entry.size;
       }
   
   
  @@ -408,5 +417,4 @@
           return null;
       }
   
  -
   }
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to