• Ian Gudger's avatar
    net: fix DNS NXDOMAIN performance regression · 11b3ee6f
    Ian Gudger authored
    golang.org/cl/37879 unintentionally changed the way NXDOMAIN errors were
    handled. Before that change, resolution would fail on the first NXDOMAIN
    error and return to the user. After that change, the next server would
    be consulted and resolution would fail only after all servers had been
    consulted. This change restores the old behavior.
    
    Go 10.10.2:
    BenchmarkGoLookupIP-12                        	   10000	    174883 ns/op   11450 B/op	     163 allocs/op
    BenchmarkGoLookupIPNoSuchHost-12              	    3000	    670140 ns/op   52189 B/op	     544 allocs/op
    BenchmarkGoLookupIPWithBrokenNameServer-12    	       1	5002568137 ns/op  163792 B/op	     375 allocs/op
    
    before this change:
    BenchmarkGoLookupIP-12                        	   10000	    165501 ns/op    8585 B/op	      94 allocs/op
    BenchmarkGoLookupIPNoSuchHost-12              	    1000	   1204117 ns/op   83661 B/op	     674 allocs/op
    BenchmarkGoLookupIPWithBrokenNameServer-12    	       1	5002629186 ns/op  159128 B/op	     275 allocs/op
    
    after this change:
    BenchmarkGoLookupIP-12                        	   10000	    158102 ns/op    8585 B/op	      94 allocs/op
    BenchmarkGoLookupIPNoSuchHost-12              	    2000	    645364 ns/op   42990 B/op	     356 allocs/op
    BenchmarkGoLookupIPWithBrokenNameServer-12    	       1	5002163437 ns/op  159144 B/op	     275 allocs/op
    
    Fixes #25336
    
    Change-Id: I315cd70330d1f66e54ce5a189a61c99f095bc138
    Reviewed-on: https://go-review.googlesource.com/113815Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
    Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
    TryBot-Result: Gobot Gobot <gobot@golang.org>
    11b3ee6f
dnsclient_unix_test.go 36.7 KB