The retry logic for consumer group operations in the admin client is complicated by the need to find the coordinator. Instead of simply retry loops which send the same request over and over, we can get more complex retry loops like the following:
- Send FindCoordinator to B -> Coordinator is A
- Send DescribeGroup to A -> NOT_COORDINATOR
- Go back to 1
Currently we construct a new Call object for each step in this loop, which means we lose some of retry bookkeeping such as the last retry time and the number of tries. This means it is possible to have tight retry loops which bounce between steps 1 and 2 and do not respect the retry backoff.