Delay connection attempts without addresses.

In some circumstances users may have connection pools configured without
any SocketAddresses ready to go. This is particularly likely in service
discovery configurations. Right now, the effect of attempting to use
such a pool is two fold. First, we'll emit a bunch of error level logs
telling users we have no addresses. Second, we'll fall into the
exponential backoff phase of connection establishment.

The first property is annoying, but the second one is actively harmful.
If your construction is timed incorrectly, we'll have the awkward
problem of burning a bunch of CPU trying to create connections we know
we cannot, and then a lengthy delay after the addresses are actually
configured before we start trying to use them. That's the worst of all
worlds.

This patch adds logic to detect the attempt to create connections when
we don't have any configured addresses and delays them. This path should
improve performance and ergonomics when in this mode.
7 jobs for cb-dont-try-to-connect-without-addresses in 4 minutes and 24 seconds (queued for 3 minutes and 10 seconds)
Status Job ID Name Coverage
  Platform Tests
passed Amazon Linux 2

passed CentOS 7

passed CentOS 8

passed Ubuntu Bionic

passed Ubuntu Focal

passed Ubuntu Xenial

 
  Quality Checks
passed #1049231901
Code Climate

00:04:24