I was measuring perf at scale with a 1m region table and noticed some improvements can be made to BaseLoadBalancer.retainAssignment().
retainAssignment() spends a few mins to enable a 1m regions table and also generates a lot of objects unnecessarily. This jira is to make the most common case go faster with very minimal changes. A slightly modified version of this patch takes about 5 seconds for a 1m region table ignoring the time spent in createCluster(). I think locality can be refreshed during master startup in different ways without taking time in retainAssignment, but will follow up on that in subsequent jiras. Leaving it untouched here, but wanted to call out the time taken without that method.