grpc / grpc-go

The Go language implementation of gRPC. HTTP/2 based RPC
https://grpc.io
Apache License 2.0
21.07k stars 4.38k forks source link

dualstack: Move resolver re-resolution out of subconn and into pickfirst #7534

Open arjan-bal opened 2 months ago

arjan-bal commented 2 months ago

Presently, addrConn is requesting a re-resolution before reporting TRANSIENT_FAILURE once all the addresses have been tried: https://github.com/grpc/grpc-go/blob/3cb33421c5d3506cb57c6201bee013b10d49fbc8/clientconn.go#L1256-L1266

With the dualstack changes for moving pickfirst logic from the subchannel to the new pickfirst LB policy, there will be one address per subchannel and the re-resolution should happen only once all the subchannels have reported TRANSIENT_FAILURE once. Subsequent re-resolutions should happen after seeing |subchannels| TRANSIENT_FAILUREs.

arjan-bal commented 2 months ago

I'll make this once all petiole policies are delegating to pick_first to avoid breaking them.