Re: [cp-patches] Patch: RFC: remove InetAddress caching

2006-01-12 Thread Mark Wielaard
Hi,

On Wed, 2006-01-11 at 15:41 -0600, Archie Cobbs wrote:
 Tom Tromey wrote:
 I would like to remove it, which is what this patch does.
 
 Sounds good to me. Let the upstream DNS server do the caching, that's
 what it's there for.

Agreed.

 Or, at least, this reverts to doing the correct and conservative thing
 while the correct and optimized thing is being worked on. What we have
 now is incorrect and optimized :-)

Kaffe includes a full DNS implementation from
http://www.xbill.org/dnsjava/

I guess most platforms come with dns support, but otherwise the above
seems to be the way to go.

Cheers,

Mark


signature.asc
Description: This is a digitally signed message part
___
Classpath-patches mailing list
Classpath-patches@gnu.org
http://lists.gnu.org/mailman/listinfo/classpath-patches


[cp-patches] Patch: RFC: remove InetAddress caching

2006-01-11 Thread Tom Tromey
I'm not checking this in yet -- I would like comments first.

I happened to run across the caching code in java.net.InetAddress
today.  We had a couple discussions about this already in the past,
e.g. one is here:

http://gcc.gnu.org/ml/java/2000-04/msg00106.html

I still think this code is incorrect, as it doesn't respect TTL
properly.  I would like to remove it, which is what this patch does.

Comments?

Tom

2006-01-11  Tom Tromey  [EMAIL PROTECTED]

* java/net/InetAddress.java (DEFAULT_CACHE_SIZE): Removed.
(DEFAULT_CACHE_PERIOD, DEFAULT_CACHE_PURGE_PCT): Likewise.
(cache_size, cache_period, cache_purge_pct, cache): Likewise.
(static initializer): Removed cache code.
(checkCacheFor, addToCache): Removed.
(getAllByName): Removed cache code.
(lookup_time): Removed.
(InetAddress): Updated.

Index: java/net/InetAddress.java
===
RCS file: /cvsroot/classpath/classpath/java/net/InetAddress.java,v
retrieving revision 1.44
diff -u -r1.44 InetAddress.java
--- java/net/InetAddress.java   9 Jan 2006 18:39:22 -   1.44
+++ java/net/InetAddress.java   11 Jan 2006 21:08:17 -
@@ -43,7 +43,6 @@
 import java.io.ObjectOutputStream;
 import java.io.ObjectStreamException;
 import java.io.Serializable;
-import java.util.HashMap;
 import java.util.StringTokenizer;
 
 /**
@@ -66,22 +65,6 @@
   private static final long serialVersionUID = 3286316764910316507L;
 
   /**
-   * The default DNS hash table size,
-   * Use a prime number happy with hash table.
-   */
-  private static final int DEFAULT_CACHE_SIZE = 89;
-
-  /**
-   * The default caching period in minutes.
-   */
-  private static final int DEFAULT_CACHE_PERIOD = 4 * 60;
-
-  /**
-   * Percentage of cache entries to purge when the table gets full.
-   */
-  private static final int DEFAULT_CACHE_PURGE_PCT = 30;
-
-  /**
* The special IP address INADDR_ANY.
*/
   private static InetAddress inaddr_any;
@@ -96,50 +79,8 @@
*/
   static InetAddress LOCALHOST;
 
-  /**
-   * The size of the cache.
-   */
-  private static int cache_size = 0;
-
-  /**
-   * The length of time we will continue to read the address from cache
-   * before forcing another lookup.
-   */
-  private static int cache_period = 0;
-
-  /**
-   * What percentage of the cache we will purge if it gets full.
-   */
-  private static int cache_purge_pct = 0;
-
-  /**
-   * HashMap to use as DNS lookup cache.
-   * Use HashMap because all accesses to cache are already synchronized.
-   */
-  private static HashMap cache;
-
   static
   {
-// Look for properties that override default caching behavior
-cache_size =
-  Integer.getInteger(gnu.java.net.dns_cache_size, DEFAULT_CACHE_SIZE)
- .intValue();
-cache_period =
-  Integer.getInteger(gnu.java.net.dns_cache_period,
- DEFAULT_CACHE_PERIOD * 60 * 1000).intValue();
-
-cache_purge_pct =
-  Integer.getInteger(gnu.java.net.dns_cache_purge_pct,
- DEFAULT_CACHE_PURGE_PCT).intValue();
-
-// Fallback to  defaults if necessary
-if ((cache_purge_pct  1) || (cache_purge_pct  100))
-  cache_purge_pct = DEFAULT_CACHE_PURGE_PCT;
-
-// Create the cache
-if (cache_size != 0)
-  cache = new HashMap(cache_size);
-
 // precompute the ANY_IF address
 try
   {
@@ -174,11 +115,6 @@
   String hostName;
 
   /**
-   * The time this address was looked up.
-   */
-  transient long lookup_time;
-
-  /**
* The field 'family' seems to be the AF_ value.
* FIXME: Much of the code in the other java.net classes does not make
* use of this family field.  A better implementation would be to make
@@ -200,8 +136,6 @@
 addr = (null == ipaddr) ? null : (byte[]) ipaddr.clone();
 hostName = hostname;
 
-lookup_time = System.currentTimeMillis();
-
 family = 2; /* AF_INET */
   }
 
@@ -660,12 +594,6 @@
return addresses;
   }
 
-// Check the cache for this host before doing a lookup
-addresses = checkCacheFor(hostname);
-
-if (addresses != null)
-  return addresses;
-
 // Not in cache, try the lookup
 byte[][] iplist = VMInetAddress.getHostByName(hostname);
 
@@ -682,71 +610,10 @@
addresses[i] = new Inet4Address(iplist[i], hostname);
   }
 
-addToCache(hostname, addresses);
 return addresses;
   }
 
   /**
-   * This method checks the DNS cache to see if we have looked this hostname
-   * up before. If so, we return the cached addresses unless it has been in the
-   * cache too long.
-   *
-   * @param hostname The hostname to check for
-   *
-   * @return The InetAddress for this hostname or null if not available
-   */
-  private static synchronized InetAddress[] checkCacheFor(String hostname)
-  {
-InetAddress[] addresses = null;
-
-if (cache_size == 0)
-  return null;
-
-Object obj = cache.get(hostname);
-if (obj == 

Re: [cp-patches] Patch: RFC: remove InetAddress caching

2006-01-11 Thread Archie Cobbs

Tom Tromey wrote:

I'm not checking this in yet -- I would like comments first.

I happened to run across the caching code in java.net.InetAddress
today.  We had a couple discussions about this already in the past,
e.g. one is here:

http://gcc.gnu.org/ml/java/2000-04/msg00106.html

I still think this code is incorrect, as it doesn't respect TTL
properly.  I would like to remove it, which is what this patch does.


Sounds good to me. Let the upstream DNS server do the caching, that's
what it's there for.

Or, at least, this reverts to doing the correct and conservative thing
while the correct and optimized thing is being worked on. What we have
now is incorrect and optimized :-)

-Archie

__
Archie Cobbs  *CTO, Awarix*  http://www.awarix.com


___
Classpath-patches mailing list
Classpath-patches@gnu.org
http://lists.gnu.org/mailman/listinfo/classpath-patches


Re: [cp-patches] Patch: RFC: remove InetAddress caching

2006-01-11 Thread David Daney

Tom Tromey wrote:

I'm not checking this in yet -- I would like comments first.

I happened to run across the caching code in java.net.InetAddress
today.  We had a couple discussions about this already in the past,
e.g. one is here:

http://gcc.gnu.org/ml/java/2000-04/msg00106.html

I still think this code is incorrect, as it doesn't respect TTL
properly.  I would like to remove it, which is what this patch does.

Comments?



I agree.  The standard C library takes care of DNS caching (via nscd) on 
most systems, so this extra cache would have no added benefit.


David Daney.



___
Classpath-patches mailing list
Classpath-patches@gnu.org
http://lists.gnu.org/mailman/listinfo/classpath-patches