dns_resolver.go raw

   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