Github user mfenes commented on the issue:

    https://github.com/apache/zookeeper/pull/451
  
    Re-resolving at StaticHostProvider level may not be sufficient as 
InetAddress.getAllByName(String host) itself uses a Java-level cache inside 
InetAddress and turns to name service (e.g. DNS) only if the host could not be 
found in the Java-level cache.
    Unfortunately, when Java resolves a new host using the name service, it 
puts the host and its addresses in the cache with TTL cache FOREVER. 
    This means, once a host gets resolved by Java, it will never again turn to 
the name service to re-resolve it. If a host's addresses get updated in DNS, 
the address cache in Java will still contain the old entry forever.
    So re-resolving at StaticHostProvider won't help in this case, as 
InetAddress.getAllByName(String host) will still return the old address(es) I 
think.
    Check the getCachedAddresses method inside InetAddress, the get() method of 
static final class Cache inside InetAddress and 
sun.net.InetAddressCachePolicy.get() which returns cachePolicy with default 
value -1 (FOREVER) if it is not overridden by Security properties 
"networkaddress.cache.ttl" and "networkaddress.cache.negative.ttl".


---

Reply via email to