We fetch bridge descriptors on every setconf and we retry way too aggressively
Whenever we setconf anything, we rebuild our options struct, including making a fresh dlstatus for each bridge. Now that we've merged the #40396 (closed) fixes, those dlstatuses start out as "do it now" every time (before, they started out that way only when we had no working bridge descriptor). The result is that on every setconf, we refetch each bridge descriptor.
Further, when we moved to the "exponential backoff" download schedules [I need to hunt down what ticket that was], we now end up reattempting bridge descriptor fetch attempts every few seconds for minutes. And now that we're fixing #40499 (closed), we will resume being willing to actually try the connection attempts within a minute of failure, so for every non-working bridge we have, we'll do a blitz of failed connections after every setconf.
These are small prices to pay for the improved resiliency we get from #40396 (closed) and #40499 (closed), so I think those fixes are still wins. But now that we've fixed those, we should think about ways to reduce our extra bridge descriptor fetch attempts.
For example, maybe when we initialize the dlstatus for a bridge, we should look at whether we have a recent descriptor for that bridge. Or, when we setconf, we should transfer over the current dlstatus of bridges if the setconf didn't impact bridges.
I'm anticipating that our fixes here shouldn't be backported.