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.
21 package dns
22 23 import (
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.
42 func 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.
49 func 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.
58 func SetMinResolutionInterval(d time.Duration) {
59 dns.MinResolutionInterval = d
60 }
61