dns_resolver.go

 1/*
 2 *
 3 * Copyright 2018 gRPC authors.
 4 *
 5 * Licensed under the Apache License, Version 2.0 (the "License");
 6 * you may not use this file except in compliance with the License.
 7 * You may obtain a copy of the License at
 8 *
 9 *     http://www.apache.org/licenses/LICENSE-2.0
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16 *
17 */
18
19// Package dns implements a dns resolver to be installed as the default resolver
20// in grpc.
21package dns
22
23import (
24	"time"
25
26	"google.golang.org/grpc/internal/resolver/dns"
27	"google.golang.org/grpc/resolver"
28)
29
30// SetResolvingTimeout sets the maximum duration for DNS resolution requests.
31//
32// This function affects the global timeout used by all channels using the DNS
33// name resolver scheme.
34//
35// It must be called only at application startup, before any gRPC calls are
36// made. Modifying this value after initialization is not thread-safe.
37//
38// The default value is 30 seconds. Setting the timeout too low may result in
39// premature timeouts during resolution, while setting it too high may lead to
40// unnecessary delays in service discovery. Choose a value appropriate for your
41// specific needs and network environment.
42func SetResolvingTimeout(timeout time.Duration) {
43	dns.ResolvingTimeout = timeout
44}
45
46// NewBuilder creates a dnsBuilder which is used to factory DNS resolvers.
47//
48// Deprecated: import grpc and use resolver.Get("dns") instead.
49func NewBuilder() resolver.Builder {
50	return dns.NewBuilder()
51}
52
53// SetMinResolutionInterval sets the default minimum interval at which DNS
54// re-resolutions are allowed. This helps to prevent excessive re-resolution.
55//
56// It must be called only at application startup, before any gRPC calls are
57// made. Modifying this value after initialization is not thread-safe.
58func SetMinResolutionInterval(d time.Duration) {
59	dns.MinResolutionInterval = d
60}