26615: release-2.0: sql,compactor: rate limit clear range requests r=bdarnell,petermattis a=benesch
Backports #26449.
I'm running a clearrange roachtest with this diff applied tonight. If it passes we're good to go.
```diff
diff --git a/pkg/cmd/roachtest/clearrange.go b/pkg/cmd/roachtest/clearrange.go
index ea5bcdff8..2b244af6d 100644
--- a/pkg/cmd/roachtest/clearrange.go
+++ b/pkg/cmd/roachtest/clearrange.go
@@ -30,19 +30,9 @@ func registerClearRange(r *registry) {
// thoroughly brick the cluster.
Stable: false,
Run: func(ctx context.Context, t *test, c *cluster) {
- t.Status(`downloading store dumps`)
- // Created via:
- // roachtest --cockroach cockroach-v2.0.1 store-gen --stores=10 bank \
- // --payload-bytes=10240 --ranges=0 --rows=65104166
- fixtureURL := `gs://cockroach-fixtures/workload/bank/version=1.0.0,payload-bytes=10240,ranges=0,rows=65104166,seed=1`
- location := storeDirURL(fixtureURL, c.nodes, "2.0")
+ t.Status(`waiting for compactions to disappear`)
+ time.Sleep(90 * time.Minute)
- // Download this store dump, which measures around 2TB (across all nodes).
- if err := downloadStoreDumps(ctx, c, location, c.nodes); err != nil {
- t.Fatal(err)
- }
-
- c.Put(ctx, cockroach, "./cockroach")
c.Start(ctx)
// Also restore a much smaller table. We'll use it to run queries against
@@ -81,7 +71,7 @@ func registerClearRange(r *registry) {
// above didn't brick the cluster.
//
// Don't lower this number, or the test may pass erroneously.
- const minutes = 60
+ const minutes = 120
t.WorkerStatus("repeatedly running COUNT(*) on small table")
for i := 0; i < minutes; i++ {
after := time.After(time.Minute)
```
---
Now that DBCompactRange no longer attempts to compact the entire
database (#26355), sending ClearRange requests in sequential batches of
50is enough to prevent a large DROP TABLE from bricking a cluster.
They're slow enough that the compaction queue can keep up and purge
range deletion tombstones before enough pile up to wedge the cluster.
This is a partial fix for #24029.
Release note (bug fix): The performance impact of dropping a large table
has been substantially reduced.
Co-authored-by: Nikhil Benesch <nikhil.benesch@gmail.com>