Alexey Serbin has submitted this change and it was merged. ( 
http://gerrit.cloudera.org:8080/13266 )

Change subject: KUDU-2791: TTL cache in DNS resolver (part 1)
......................................................................

KUDU-2791: TTL cache in DNS resolver (part 1)

Added TTL cache for the results of name resolution in DnsResolver.
Updated corresponding tests as well.  A follow-up changelist will
add necessary plumbing in various places where it's beneficial to
use caching DnsResolver instead of HostPort::ResolveAddresses().

This changelist also introduces runtime flags which map into parameters
of the TTL cache used in DnsResolver. By default, the cache's capacity
is 1 MiByte, and its records' TTL is 15 seconds.

1 MiByte capacity is big enough to accommodate thousands of records.
>From the other side, it's low enough to avoid running an extra thread
for scrubbing the cache of expired records, allowing the cache to purge
expired records only when it is at capacity.

Record's TTL of 15 seconds is half of the minimum recommended as stated
by various 'best practices': 30 seconds for DNS A records
(see [1] -- [4] below).  Kudu masters and tablet servers are not
supposed to run behind a load balancer, so 15 seconds TTL for a cached
DNS A record seems to be good enough in the context of running a Kudu
cluster.

[1] https://ns1.com/knowledgebase/ttl-best-practices
[2] https://serverfault.com/questions/7478/recommended-dns-ttl
[3] https://support.google.com/a/answer/48090?hl=en
[4] https://ns1.com/blog/what-is-the-lowest-ttl-i-can-get-away-with

Change-Id: Ia1bbd55a8231fd541d2087f9202f24e80bc79f0b
Reviewed-on: http://gerrit.cloudera.org:8080/13266
Tested-by: Kudu Jenkins
Reviewed-by: Adar Dembo <[email protected]>
---
M src/kudu/client/client-internal.cc
M src/kudu/client/client-internal.h
M src/kudu/client/client.cc
M src/kudu/client/meta_cache.cc
M src/kudu/util/net/dns_resolver-test.cc
M src/kudu/util/net/dns_resolver.cc
M src/kudu/util/net/dns_resolver.h
M src/kudu/util/net/net_util.cc
8 files changed, 233 insertions(+), 60 deletions(-)

Approvals:
  Kudu Jenkins: Verified
  Adar Dembo: Looks good to me, approved

--
To view, visit http://gerrit.cloudera.org:8080/13266
To unsubscribe, visit http://gerrit.cloudera.org:8080/settings

Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-MessageType: merged
Gerrit-Change-Id: Ia1bbd55a8231fd541d2087f9202f24e80bc79f0b
Gerrit-Change-Number: 13266
Gerrit-PatchSet: 8
Gerrit-Owner: Alexey Serbin <[email protected]>
Gerrit-Reviewer: Adar Dembo <[email protected]>
Gerrit-Reviewer: Alexey Serbin <[email protected]>
Gerrit-Reviewer: Kudu Jenkins (120)
Gerrit-Reviewer: Todd Lipcon <[email protected]>

Reply via email to