We do redundant bridge descriptor fetches on every startup / for every new bridge
When we start Tor with a bridge configured (or when we setconf to switch to using bridges), we call fetch_bridge_descriptors(), which makes us fetch a bridge descriptor for each of our bridges, and while fetching each one, we set up the next fetch to happen 0 seconds from now.
Then, 1 second later, we call fetch_bridge_descriptors() again, and we launch new fetches for each of our bridges. If we have a working bridge descriptor by then (i.e. one of our first fetches finished), then we reschedule the next fetch for three hours from now. If we don't yet have a working bridge descriptor, then we schedule each of the next fetches for 0 seconds from now, i.e. we do the tight loop once again.
So for every bridge that's configured, we fetch its descriptor at least twice. It's not the end of the world but it's still kind of crummy.
I believe the bug went into Tor 0.3.2.1-alpha in commit 97249c4f, related to #24367 (closed).
Found while debugging #40396 (closed).