[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[jira] [Commented] (BROOKLYN-579) DNS lookups cached for too long

    [ https://issues.apache.org/jira/browse/BROOKLYN-579?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16488924#comment-16488924 ] 

ASF GitHub Bot commented on BROOKLYN-579:

GitHub user tbouron opened a pull request:


    [BROOKLYN-579] Add DNS TTL configuration via envvar

    Before, java was not refreshing the DNS records, ever. This is due to the default `networkaddress.cache.ttl` set to `-1`, i.e. cache forever.
    This PR updates the system property `sun.net.inetaddr.ttl` to `60` by default. It uses `sun.net.inetaddr.ttl` because `networkaddress.cache.ttl` **is not** a system property. But this has the desirable effect (see: https://stackoverflow.com/a/17219327)

You can merge this pull request into a Git repository by running:

    $ git pull https://github.com/tbouron/brooklyn-dist feature/dns-ttl

Alternatively you can review and apply these changes as the patch at:


To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:

    This closes #121
commit 2962a166979bbead588a172a378bac0678c12ba0
Author: Thomas Bouron <thomas.bouron@...>
Date:   2018-05-24T12:44:46Z

    Add DNS TTL configuration via envvar


> DNS lookups cached for too long
> -------------------------------
>                 Key: BROOKLYN-579
>                 URL: https://issues.apache.org/jira/browse/BROOKLYN-579
>             Project: Brooklyn
>          Issue Type: Bug
>            Reporter: Alex Heneveld
>            Priority: Major
> I've had issues where DNS values are changed but Brooklyn doesn't see those.  I think Java caches hostnames forever by default, ignoring DNS TTL.  (Controlling Route 53 from Brooklyn is one obvious such example!)
> We should consider overriding this.
> Oracle Cloud describe how (https://docs.us-phoenix-1.oraclecloud.com/Content/API/SDKDocs/javasdk.htm):
> {quote}The JVM uses the [networkaddress.cache.ttl|http://docs.oracle.com/javase/8/docs/technotes/guides/net/properties.html] property to specify the caching policy for DNS name lookups. The value is an integer that represents the number of seconds to cache the successful lookup. The default value for many JVMs, {{-1}}, indicates that the lookup should be cached forever.
> Because resources in Oracle Cloud Infrastructure use DNS names that can change, we recommend that you change the the TTL value to 60 seconds. This ensures that the new IP address for the resource is returned on next DNS query. You can change this value globally or specifically for your application:
> {quote} * 
> {quote}To set TTL globally for all applications using the JVM, add the following in the {{$JAVA_HOME/jre/lib/security/java.security}} file:
> {{networkaddress.cache.ttl=60}}{quote}
>  * 
> {quote}To set TTL only for your application, set the following in your application's initialization code:
> {{java.security.Security.setProperty("networkaddress.cache.ttl" , "60");}}{quote}

This message was sent by Atlassian JIRA