Merge #42274

42274: backup: randomize order that spans are backed up r=dt a=dt

Prior to this change, sequential ranges were sent ExportRequests
sequentially during BACKUP. If adjacent ranges had co-located
leaseholders (which could easily happen in some cases), then the entire
quota of concurrent outstanding requests could be filled by requests for
one node or more generally some small subset of nodes (e.g. a
geo-partitioned table would send all the backup requests to one region,
then to another, etc), leaving the rest of the cluster under-utilized.

This change randomizes the order in which ranges are sent
ExportRequests, ideally evening out utilization across all nodes that
host ranges for the table(s) being backed up even if leaseholders for
adjacent ranges are clustered.

Release note (performance improvement): Spread BACKUP work more evenly across clusters that have non-uniform leaseholder distributions.

Co-authored-by: David Taylor <[email protected]>
9 jobs for master in 1 minute and 13 seconds (queued for 2 seconds)
Status Job ID Name Coverage
  Build
failed #352
build

00:01:13

 
  Test
skipped #354
allowed to fail
code_quality
skipped #355
allowed to fail
container_scanning
skipped #356
allowed to fail
dependency_scanning
skipped #357
allowed to fail
license_management
skipped #358
allowed to fail
sast
skipped #353
test
 
  Production
skipped #359
production
 
  Performance
skipped #360
allowed to fail
performance
 
Name Stage Failure
failed
build Build
Skipping Git submodules setup
$ if [[ -z "$CI_COMMIT_TAG" ]]; then # collapsed multi-line command
$ /build/build.sh
Building Heroku-based application using gliderlabs/herokuish docker image...
invalid reference format
invalid reference format
invalid argument "/master:6ec497227e9c0c7d920e7b80d8608c2c415b9975" for "-t, --tag" flag: invalid reference format
See 'docker build --help'.
ERROR: Job failed: command terminated with exit code 1