Openstatus www.openstatus.dev

perf(checker): optimize DNS lookup to reduce network calls (#1593)

Co-authored-by: shuklavedant01 <shuklavedant001@gmail.com>

authored by

Vedant Shukla
shuklavedant01
and committed by
GitHub
562a9b97 b321bc21

+13 -37
+13 -37
apps/checker/checker/dns.go
··· 22 22 func Dns(ctx context.Context, host string) (*DnsResponse, error) { 23 23 logger:= log.Ctx(ctx).With().Str("monitor", host).Logger() 24 24 25 - A, err := lookupA(host) 25 + ips, err := net.LookupIP(host) 26 26 if err != nil { 27 - logger.Error().Err(err).Msg("DNS A record lookup failed") 28 - return nil, fmt.Errorf("failed to lookup A record: %w", err) 27 + logger.Error().Err(err).Msg("DNS IP lookup failed") 28 + return nil, fmt.Errorf("failed to lookup IPs: %w", err) 29 29 } 30 - AAAA, err := lookupAAAA(host) 31 - if err != nil { 32 - logger.Error().Err(err).Msg("DNS AAAA record lookup failed") 33 - return nil, fmt.Errorf("failed to lookup AAAA record: %w", err) 30 + 31 + A := []string{} 32 + AAAA := []string{} 33 + 34 + for _, ip := range ips { 35 + if ip.To4() != nil { 36 + A = append(A, ip.String()) 37 + } else { 38 + AAAA = append(AAAA, ip.String()) 39 + } 34 40 } 35 41 CNAME,err := lookupCNAME(host) 36 42 if err != nil { ··· 59 65 return response, nil 60 66 } 61 67 62 - func lookupA(domain string) ([]string, error) { 63 68 64 - A := []string{} 65 - ips, err := net.LookupIP(domain) 66 - if err != nil { 67 - return nil, err 68 - } 69 - 70 - for _, ip := range ips { 71 - if ip.To4() != nil { 72 - A = append(A, ip.String()) 73 - } 74 - } 75 - return A, nil 76 - } 77 - 78 - func lookupAAAA(domain string) ([]string, error) { 79 - AAAA := []string{} 80 - ips, err := net.LookupIP(domain) 81 - if err != nil { 82 - return nil, err 83 - } 84 - 85 - for _, ip := range ips { 86 - if ip.To16() != nil && ip.To4() == nil { 87 - 88 - AAAA = append(AAAA, ip.String()) 89 - } 90 - } 91 - return AAAA, nil 92 - } 93 69 94 70 func lookupCNAME(domain string) (string, error) { 95 71 cname, err := net.LookupCNAME(domain)